Raspberry Pi相機(jī)非常有趣。它可用于傻瓜照片,定格動(dòng)畫和計(jì)算機(jī)視覺項(xiàng)目。
為了介紹如何將相機(jī)用作Bash腳本的一部分,我們將使用帶有按鈕的相機(jī),該按鈕將為圖像選擇一個(gè)隨機(jī)濾鏡。這些濾鏡中的一些可以增強(qiáng)圖像,有些可以將其更改為卡通,其他則可以產(chǎn)生藝術(shù)效果。
在The Pi Cast的最新一集中,我們使用Python創(chuàng)建了該項(xiàng)目的版本。在這里,您可以看到官方Raspberry Pi相機(jī)可能產(chǎn)生的所有圖像效果。
Bash終端是我們的編程環(huán)境,它是引入功能強(qiáng)大的腳本語(yǔ)言的好方法,該腳本語(yǔ)言經(jīng)常被其他語(yǔ)言所忽視。
我們?cè)谠擁?xiàng)目中使用了Raspberry Pi 4,但也可以使用運(yùn)行最新Raspberry Pi OS的任何其他Raspberry Pi模型來創(chuàng)建該項(xiàng)目。
對(duì)于此項(xiàng)目,您將需要:
? 任何樹莓派
? 任何Raspberry Pi攝像頭模塊(盡管沒有USB網(wǎng)絡(luò)攝像頭)
? 最新的Raspberry Pi操作系統(tǒng)
? 面包板
? 2x公對(duì)母跳線
? 一個(gè)按鈕
設(shè)置Raspberry Pi相機(jī)
如果您已經(jīng)熟悉如何設(shè)置Pi相機(jī)模塊,則可以跳過。這些步驟將適用于所有Raspberry Pi相機(jī)模塊(包括第三方模塊)。
關(guān)閉Raspberry Pi的電源。
1.輕輕向上提起塑料鎖,打開攝像頭端口。
2.插入帶狀連接器,使藍(lán)色卡舌面向USB /以太網(wǎng)端口。
3.合上連接器上的鎖,并輕輕拉動(dòng)它以確保其就位。
4.打開Raspberry Pi的電源,然后轉(zhuǎn)到“首選項(xiàng)” 》》“ Raspberry Pi配置”。
5.單擊“接口”選項(xiàng)卡中“攝像機(jī)”的“啟用”按鈕。
6.單擊確定,然后重新啟動(dòng)Pi。
7.打開終端,然后鍵入以下命令以快速拍照以測(cè)試相機(jī)。
$ raspistill -o test.jpg
經(jīng)過五秒鐘后,將拍攝圖像并將其另存為test.jpg。在繼續(xù)之前,使用文件管理器檢查圖像是否正確。
接線按鈕
一個(gè)有時(shí)被稱為“瞬時(shí)開關(guān)”的按鈕將用于觸發(fā)我們的項(xiàng)目。為此,我們需要通過面包板將按鈕連接到Raspberry Pi的GPIO。
1.將按鈕插入面包板,使支腿越過面包板的中央通道。
2.將公對(duì)母跳線的公端與面包板上按鈕的左上腿放在同一列中。將另一端連接 到Raspberry Pi的3.3V引腳。這是離Micro SD卡插槽最近的插針。
3.以與以前相同的方式,將按鈕的右上角連接到Raspberry Pi的GPIO 17(左列的六個(gè)引腳)。
為Raspberry Pi隨機(jī)圖像編寫代碼
編寫B(tài)ash代碼是在計(jì)算機(jī)上編寫任務(wù)腳本的好方法。Bash是一種功能強(qiáng)大的腳本語(yǔ)言,可以自動(dòng)執(zhí)行許多任務(wù)。通過Raspberry Pi,我們還可以使用它與GPIO交互。
1.啟動(dòng)Geany(從菜單中)并創(chuàng)建一個(gè)名為random-art.sh的新文件,并記住經(jīng)常保存。
2.輸入第一行代碼,這將告訴代碼在哪里可以找到Bash解釋器。
#!/bin/bash
3. 使用echo命令,我們將值寫入兩個(gè)文件。第一個(gè)使能GPIO 17,第二個(gè)將GPIO 17設(shè)置為輸入,默認(rèn)情況下該輸入為關(guān)閉(0)。
echo “17” 》 /sys/class/gpio/export
echo “in” 》 /sys/class/gpio/gpio17/direction
4. 輸入一個(gè)用于存儲(chǔ)此項(xiàng)目中所有可能的圖像效果的數(shù)組。總共有20種效果,每種效果在數(shù)組中都有自己的位置,這使我們的代碼可以根據(jù)隨機(jī)數(shù)選擇特定的效果。
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.創(chuàng)建一個(gè)名為size的變量以存儲(chǔ)陣列中的效果數(shù)。此變量將存儲(chǔ)命令的輸出(通過{}),該命令檢查數(shù)組的長(zhǎng)度。
size=${#array[@]}
6.使用while true循環(huán)不斷運(yùn)行代碼的下一部分。
while true; do
7.創(chuàng)建另一個(gè)變量index,該變量將存儲(chǔ)一個(gè)介于零和數(shù)組長(zhǎng)度(在本例中為20)之間的隨機(jī)數(shù)。
index=$(($RANDOM % $size))
8. 打印隨機(jī)選擇的圖像效果以進(jìn)行調(diào)試。
echo ${array[$index]}
9.檢查連接到GPIO 17的按鈕的當(dāng)前狀態(tài),并將其保存到變量data中。如果未按下,它將具有默認(rèn)狀態(tài)off,即0。按下時(shí),該值將變?yōu)閛n,即1。這是我們相機(jī)項(xiàng)目的觸發(fā)器。
data=“$(cat /sys/class/gpio/gpio17/value)”
10.使用條件測(cè)試來檢查存儲(chǔ)在數(shù)據(jù)變量中的值。如果值為1,則已按下按鈕。
if [ ${data} = “1” ]; then
11.按下按鈕后,下一步將創(chuàng)建一個(gè)時(shí)間戳并將其保存到名為TIME的變量中。
TIME=$(date +“%Y-%m-%d_%H%M%S”)
12.使用圖像效果拍照,然后使用時(shí)間戳記作為文件名保存圖像。
raspistill -ifx ${array[$index]} -o $TIME.jpg
13.關(guān)閉條件循環(huán),然后關(guān)閉while true循環(huán)。
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
運(yùn)行代碼
要使代碼可執(zhí)行,請(qǐng)打開終端并導(dǎo)航到包含代碼的文件夾。輸入此命令。
$ chmod +x random-art.sh
要運(yùn)行命令,請(qǐng)?jiān)诮K端類型中
。/random-art.sh
按下按鈕觸發(fā)代碼以選擇隨機(jī)圖像效果并拍照!
責(zé)任編輯:pj
-
連接器
+關(guān)注
關(guān)注
99文章
15233瀏覽量
139334 -
usb
+關(guān)注
關(guān)注
60文章
8146瀏覽量
270932 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7632瀏覽量
90213 -
相機(jī)
+關(guān)注
關(guān)注
4文章
1434瀏覽量
54488
發(fā)布評(píng)論請(qǐng)先 登錄
Protel99se 安裝好了,一部分ddb文件能打開一部分pcb格式打不開
保護(hù)您的 IP 核——第一部分軟 IP——前言
作為其最新教育推動(dòng)的一部分 微軟將Immersive Reader引入了虛擬現(xiàn)實(shí)
第一部分、硬件設(shè)計(jì)

Raspberry Pi Bash Shell 腳本簡(jiǎn)介

為提高效率——如何將雙向功率流集成到UPS設(shè)計(jì)中(第一部分)

用Raspberry Pi和傳感器制作“可自動(dòng)營(yíng)造舒適空間的裝置” 第四部分?劇終篇

用Raspberry Pi和傳感器制作“可自動(dòng)營(yíng)造舒適空間的裝置” 第二部分

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

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

基于Raspberry Pi的DIY無人機(jī)第3部分–FPV設(shè)置指南

FPGA立體相機(jī)設(shè)置-第一部分

評(píng)論