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

Raspberry Pi Bash Shell 腳本簡介

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

用Raspberry Pi和傳感器制作“可自動營造舒適空間的裝置” 第二部分

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

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

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

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

評論