0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将Raspberry Pi相机用作Bash脚本的一部分?

电子设计 来源:电路城 作者:电路城 2021-04-28 09:41 次阅读

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

按下按钮触发代码以选择随机图像效果并拍照!
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 连接器
    +关注

    关注

    98

    文章

    14520

    浏览量

    136538
  • usb
    usb
    +关注

    关注

    60

    文章

    7945

    浏览量

    264658
  • 计算机
    +关注

    关注

    19

    文章

    7494

    浏览量

    87955
  • 相机
    +关注

    关注

    4

    文章

    1351

    浏览量

    53612
收藏 人收藏

    评论

    相关推荐

    Protel99se 安装好了,一部分ddb文件能打开一部分pcb格式打不开

    Protel99se 安装好了,一部分ddb文件能打开,一部分pcb格式打不开,该怎么办
    发表于 12-21 20:14

    保护您的 IP 核——第一部分软 IP——前言

    保护您的 IP 核——第一部分软 IP——前言 随着全球化硬件设计和制造过程的激增以及IP供应商之间的竞争,IP盗版/假冒、虚假所有权等威胁正在加剧。因此,保护​​ IP 核设计的要求及其代表的专有
    发表于 02-23 11:59

    ISDB放送标准中的一部分

    ISDB放送标准中的一部分,是日本的番组表显示相关的。
    发表于 11-16 18:52 2次下载

    作为其最新教育推动的一部分 微软Immersive Reader引入了虚拟现实

    作为其最新教育推动的一部分,微软Immersive Reader引入虚拟现实。 该公司在BETT UK上展示了用于VR的Immersive Reader,展示了用户如何将Immersive Reader工具与他们的VR头显配合
    发表于 01-23 16:08 869次阅读

    有时你需要点收获第一部分

    有时你需要点收获第一部分
    发表于 04-20 10:31 1次下载
    有时你需要<b class='flag-5'>一</b>点收获第<b class='flag-5'>一部分</b>

    一部分、硬件设计

    一部分、硬件设计我把个硬件系统分为五个单元:电源单元、单片机单元、输入单元、输出单元、通信单元。如下图:
    发表于 12-09 12:36 16次下载
    第<b class='flag-5'>一部分</b>、硬件设计

    Raspberry Pi Bash Shell 脚本简介

      抛开潜在的麻烦不谈,Bash 可以是个非常强大的工具,让您可以自动执行各种任务。在即将发表的文章中,我展示如何使用 Bash 脚本
    的头像 发表于 08-15 15:08 1200次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Bash</b> Shell <b class='flag-5'>脚本</b>简介

    为提高效率——如何将双向功率流集成到UPS设计中(第一部分

    为提高效率——如何将双向功率流集成到UPS设计中(第一部分
    发表于 11-01 08:27 0次下载
    为提高效率——<b class='flag-5'>如何将</b>双向功率流集成到UPS设计中(第<b class='flag-5'>一部分</b>)

    Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第四部分•剧终篇

    第1回:用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第一部分第2回:用Raspberry Pi和传感器制作“可自动营
    的头像 发表于 02-24 10:17 766次阅读
    用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和传感器制作“可自动营造舒适空间的装置” 第四<b class='flag-5'>部分</b>•剧终篇

    Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第二部分

    大家好,我是吉田!我们这次要创作款让家中更舒适、让在家办公更高效的设备,本文是第二部分。第一部分介绍了制作纲要和所需部件。这次我们实际连接Bluetooth传感器和
    的头像 发表于 03-01 11:15 563次阅读
    用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和传感器制作“可自动营造舒适空间的装置” 第二<b class='flag-5'>部分</b>

    通过Twython在Raspberry Pi上发推文!(第2部分

    欢迎来到通过“Twython”在Raspberry Pi上发推文的第2部分。和上次样,我们遵循Ras
    的头像 发表于 03-01 10:19 731次阅读
    通过Twython在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>上发推文!(第2<b class='flag-5'>部分</b>)

    使用Raspberry Pi 3自制智能相框和日历—第二部分

    本教程的第二部分将带您完成构建智能相框和日历的框架、连接PIR运动传感器和控制相框幻灯片显示向日历显示的过渡这些步骤。该项目继续使用本教程的使用Raspberry Pi 3自制智能相
    的头像 发表于 02-24 17:51 1347次阅读
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 3自制智能相框和日历—第二<b class='flag-5'>部分</b>

    使用Raspberry Pi 3自制智能相框和日历—第一部分

    该项目将使用具有Raspbian Jessie操作系统的Raspberry Pi 3 B型进行构建。我指导您完成Raspberry Pi
    的头像 发表于 02-24 17:08 1220次阅读
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 3自制智能相框和日历—第<b class='flag-5'>一部分</b>

    基于Raspberry Pi的DIY无人机第3部分–FPV设置指南

    本文是我们Raspberry Pi四轴飞行器系列的最后一部分。有关本教程的其他部分,请参考《DIYRaspberry Pi无人机:机械构造–
    的头像 发表于 02-24 17:46 5061次阅读
    基于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的DIY无人机第3<b class='flag-5'>部分</b>–FPV设置指南

    FPGA立体相机设置-第一部分

    电子发烧友网站提供《FPGA立体相机设置-第一部分.zip》资料免费下载
    发表于 06-29 09:27 0次下载
    FPGA立体<b class='flag-5'>相机</b>设置-第<b class='flag-5'>一部分</b>