raspberry pi相机非常有趣。它可用于傻瓜照片,定格动画和计算机视觉项目。
为了介绍如何将相机用作bash脚本的一部分,我们将使用带有按钮的相机,该按钮将为图像选择一个随机滤镜。这些滤镜中的一些可以增强图像,有些可以将其更改为卡通,其他则可以产生艺术效果。
在the pi cast的最新一集中,我们使用python创建了该项目的版本。在这里,您可以看到官方raspberry pi相机可能产生的所有图像效果。
bash终端是我们的编程环境,它是引入功能强大的脚本语言的好方法,该脚本语言经常被其他语言所忽视。
我们在该项目中使用了raspberry pi 4,但也可以使用运行最新raspberry pi os的任何其他raspberry pi模型来创建该项目。
对于此项目,您将需要:
• 任何树莓派
• 任何raspberry pi摄像头模块(尽管没有usb网络摄像头)
• 最新的raspberry pi操作系统
• 面包板
• 2x公对母跳线
• 一个按钮
设置raspberry pi相机
如果您已经熟悉如何设置pi相机模块,则可以跳过。这些步骤将适用于所有raspberry pi相机模块(包括第三方模块)。
关闭raspberry pi的电源。
1.轻轻向上提起塑料锁,打开摄像头端口。
2.插入带状连接器,使蓝色卡舌面向usb /以太网端口。
3.合上连接器上的锁,并轻轻拉动它以确保其就位。
4.打开raspberry pi的电源,然后转到“首选项” 》》“ raspberry pi配置”。
5.单击“接口”选项卡中“摄像机”的“启用”按钮。
6.单击确定,然后重新启动pi。
7.打开终端,然后键入以下命令以快速拍照以测试相机。
$ raspistill -o test.jpg
经过五秒钟后,将拍摄图像并将其另存为test.jpg。在继续之前,使用文件管理器检查图像是否正确。
接线按钮
一个有时被称为“瞬时开关”的按钮将用于触发我们的项目。为此,我们需要通过面包板将按钮连接到raspberry pi的gpio。
1.将按钮插入面包板,使支腿越过面包板的中央通道。
2.将公对母跳线的公端与面包板上按钮的左上腿放在同一列中。将另一端连接 到raspberry pi的3.3v引脚。这是离micro sd卡插槽最近的插针。
3.以与以前相同的方式,将按钮的右上角连接到raspberry pi的gpio 17(左列的六个引脚)。
为raspberry pi随机图像编写代码
编写bash代码是在计算机上编写任务脚本的好方法。bash是一种功能强大的脚本语言,可以自动执行许多任务。通过raspberry pi,我们还可以使用它与gpio交互。
1.启动geany(从菜单中)并创建一个名为random-art.sh的新文件,并记住经常保存。
2.输入第一行代码,这将告诉代码在哪里可以找到bash解释器。
#!/bin/bash
3. 使用echo命令,我们将值写入两个文件。第一个使能gpio 17,第二个将gpio 17设置为输入,默认情况下该输入为关闭(0)。
echo “17” 》 /sys/class/gpio/export
echo “in” 》 /sys/class/gpio/gpio17/direction
4. 输入一个用于存储此项目中所有可能的图像效果的数组。总共有20种效果,每种效果在数组中都有自己的位置,这使我们的代码可以根据随机数选择特定的效果。
array[0]=“none”
array[1]=“negative”
array[2]=“solarise”
array[3]=“sketch”
array[4]=“denoise”
array[5]=“emboss”
array[6]=“oilpant”
array[7]=“hatch”
array[8]=“gpen”
array[9]=“pastel”
array[10]=“watercolour”
array[11]=“film”
array[12]=“blur”
array[13]=“saturation”
array[14]=“colourswap”
array[15]=“washedout”
array[16]=“posterise”
array[17]=“colourpoint”
array[18]=“colourbalance”
array[19]=“cartoon”
5.创建一个名为size的变量以存储阵列中的效果数。此变量将存储命令的输出(通过{}),该命令检查数组的长度。
size=${#array[@]}
6.使用while true循环不断运行代码的下一部分。
while true; do
7.创建另一个变量index,该变量将存储一个介于零和数组长度(在本例中为20)之间的随机数。
index=$(($random % $size))
8. 打印随机选择的图像效果以进行调试。
echo ${array[$index]}
9.检查连接到gpio 17的按钮的当前状态,并将其保存到变量data中。如果未按下,它将具有默认状态off,即0。按下时,该值将变为on,即1。这是我们相机项目的触发器。
data=“$(cat /sys/class/gpio/gpio17/value)”
10.使用条件测试来检查存储在数据变量中的值。如果值为1,则已按下按钮。
if [ ${data} = “1” ]; then
11.按下按钮后,下一步将创建一个时间戳并将其保存到名为time的变量中。
time=$(date +“%y-%m-%d_%h%m%s”)
12.使用图像效果拍照,然后使用时间戳记作为文件名保存图像。
raspistill -ifx ${array[$index]} -o $time.jpg
13.关闭条件循环,然后关闭while true循环。
fi
done
保存代码。
完整的代码:
#!/bin/bash
echo “17” 》 /sys/class/gpio/export
echo “in” 》 /sys/class/gpio/gpio17/direction
array[0]=“none”
array[1]=“negative”
array[2]=“solarise”
array[3]=“sketch”
array[4]=“denoise”
array[5]=“emboss”
array[6]=“oilpant”
array[7]=“hatch”
array[8]=“gpen”
array[9]=“pastel”
array[10]=“watercolour”
array[11]=“film”
array[12]=“blur”
array[13]=“saturation”
array[14]=“colourswap”
array[15]=“washedout”
array[16]=“posterise”
array[17]=“colourpoint”
array[18]=“colourbalance”
array[19]=“cartoon”
size=${#array[@]}
while true; do
index=$(($random % $size))
echo ${array[$index]}
data=“$(cat /sys/class/gpio/gpio17/value)”
if [ ${data} = “1” ]; then
time=$(date +“%y-%m-%d_%h%m%s”)
raspistill -ifx ${array[$index]} -o $time.jpg
fi
done
运行代码
要使代码可执行,请打开终端并导航到包含代码的文件夹。输入此命令。
$ chmod +x random-art.sh
要运行命令,请在终端类型中
。/random-art.sh
按下按钮触发代码以选择随机图像效果并拍照!
TempTick被认为是中国的黑客组织
诺基亚,明年将重返智能机市场
激光雷达传感技术的工作原理和特点
哪款互联网电视最值得购买?
iphone8发布会时间、发售日程表曝光,价格8888很吉利
如何将Raspberry Pi相机用作Bash脚本的一部分?
TOF镜头是什么
国产32位MCU选型 P2P替代STM32
苹果自研Wi-Fi芯片之路充满挑战
柔宇CEO刘自鸿入选《财富》全球40位40岁以下商业精英榜
新唐科技NCT7368S比较器简介
打造LED高光效COB封装产品的具体方法详解
智能电网的概念_智能电网在变电站中的应用
如何让人工智能应用和隐私保护兼得
钡铼技术低成本4G无线远程监测麦克维尔暖通系统HAVC物联网关BL103
百度李彦宏大会被浇水 AI芯片“鸿鹄”照常发布
Redmi K30S至尊纪念版MIUI12更新
大规模仿真测试环境是ADAS和AV技术得以安全测试和验证的唯一环境?
性价比之王:小米6抢购和一加5ppt,你更愿意选择谁?
protel类似软件有哪些