作者:David Plowman 2023年6月26日
本次#MagPiMonday,我們?yōu)槟鷰?lái)樹莓派攝像頭模塊靜態(tài)圖像捕捉模式和設(shè)置的深入指南。
高品質(zhì)攝像頭模塊采用手動(dòng)對(duì)焦;新的攝像頭模塊3具有可通過(guò)軟件控制的自動(dòng)對(duì)焦功能
在MagPi#129(https://magpi.raspberrypi.com/issues/129)中,我們介紹了libcamera-still,它允許我們捕捉靜止圖像。但它還有更多的選項(xiàng)來(lái)控制如何捕捉圖像,以及文件格式和可用的圖像編碼器。我們將在本教程中介紹這些特性?,F(xiàn)在,我們將繼續(xù)假設(shè)您的鍵盤和顯示器直接接入了您的樹莓派。
以不同分辨率拍攝圖像
默認(rèn)情況下,libcamera-still 將以攝像頭支持的最大可用分辨率拍攝圖像。例如,對(duì)于HQ攝像頭,這意味著圖像大小為4056×3040像素。但是,使用--width和--height參數(shù)可以很容易地更改它。例如,如果您想拍攝1536×1024像素的圖像,則應(yīng)使用:
libcamera-still --width 1536 --height 1024 -o smaller.jpg
樹莓派攝像頭模塊3提供自動(dòng)對(duì)焦功能,使您能夠聚焦圖像的特定部分
圖像編碼器和文件格式
圖像通常以某種方式進(jìn)行編碼(通常會(huì)進(jìn)行壓縮,使其不那么大),然后保存為磁盤上的標(biāo)準(zhǔn)文件格式。
JPEG文件
libcamera-still使用的默認(rèn)文件格式仍然是JPEG,因?yàn)樗哂蟹浅V泛的支持,再加上有用的壓縮級(jí)別。通常,JPEG文件的擴(kuò)展名是.jpg,或者有時(shí)是.JPEG,正如我們已經(jīng)看到的那樣。
JPEG是一種有損壓縮格式,這意味著加載JPEG文件的結(jié)果不再與您開始使用的圖像相同,盡管差異被安排為您最不會(huì)注意到的差異。您可以指定一個(gè)質(zhì)量因子來(lái)指示您想要的壓縮程度。在非常低的值下,您的圖像確實(shí)會(huì)惡化,但在非常高的值下JPEG過(guò)程在視覺(jué)上是無(wú)損的;也就是說(shuō),它真的會(huì)看起來(lái)和原始圖像一樣好。
質(zhì)量因子的范圍從1到99,如果你不給它指定一個(gè),它會(huì)選擇值93,非正式地等同于“相當(dāng)高的質(zhì)量”。要以不同的質(zhì)量級(jí)別保存JPEG,請(qǐng)使用-q(或等效的--quality)參數(shù),如下所示:
libcamera-still -q 80 -o test.jpg
嘗試使用10和50這樣的質(zhì)量值,看看你得到了什么!
PNG文件
PNG(或“Portable Network Graphic”)是另一種廣泛支持的文件和壓縮格式。PNG是一種無(wú)損壓縮格式,這意味著您可以保證恢復(fù)與開始時(shí)完全相同的圖像(與JPEG不同)。不利的一面是,PNG文件通常比JPEG文件大,而且它們更難創(chuàng)建,需要更長(zhǎng)的時(shí)間。
要保存PNG文件,您需要告訴libcamera-still ,您希望使用-e或--encoder參數(shù)使用不同的編碼器,如下所示:
libcamera-still -e png -o test.png
請(qǐng)注意,必須指定-e選項(xiàng)才能獲得PNG文件——僅更改文件名是不夠的。PNG不支持質(zhì)量參數(shù)。
DNG文件
DNG(或“Digital NeGative”)文件與PNG文件截然不同。顧名思義,它們?cè)谀撤N程度上類似于我們?cè)趯⑵滹@影成照片之前從膠片相機(jī)中獲得的“底片”。在我們的案例中,在樹莓派上的硬件將其“開發(fā)”為可視(JPEG或PNG)圖像之前,DNG文件存儲(chǔ)從圖像傳感器接收的原始數(shù)字。DNG文件與同一圖像的“開發(fā)”JPEG或PNG版本一起保存。要保存DNG文件,請(qǐng)使用-r(或--raw)參數(shù):
libcamera-still -r test.jpg
libcamera-still會(huì)自動(dòng)將dng文件名中的.jpg替換為.dng,在這種情況下同時(shí)提供test.dng和test.jpg。
存在許多第三方軟件程序以交互方式“開發(fā)”這些DNG文件——這是一個(gè)相當(dāng)復(fù)雜的過(guò)程,超出了本指南的范圍。
延時(shí)捕獲
延時(shí)捕捉是指我們每隔一段時(shí)間(可能是每分鐘、每小時(shí)或每一天)捕捉一張圖像,然后將它們重新組合成視頻,以更快的速度播放。libcamera-still已經(jīng)準(zhǔn)備好了,可以直接捕獲我們需要的圖像。
樹莓派攝像頭模塊能夠捕捉各種不同格式的圖像,包括JPEG、PNG和DNG
我們需要引入——延時(shí)選項(xiàng),我們將回顧我們之前看到的幾個(gè)選項(xiàng)。
-t或–timeout。執(zhí)行捕獲的時(shí)間長(zhǎng)度(以毫秒為單位)。在延時(shí)的情況下,libcamera-still會(huì)在這段總的時(shí)間內(nèi)運(yùn)行捕獲。您可以傳遞值0,意思是“無(wú)限期運(yùn)行”(您必須手動(dòng)停止libcamera-still,例如按鍵盤上的CTRL+C)。
–timelapse.。每次延時(shí)捕獲之間的時(shí)間長(zhǎng)度,同樣以毫秒為單位。
-o或–output。輸出文件的名稱。對(duì)于延時(shí)拍攝,我們不能給所有圖像起相同的名字,所以我們使用了一種特殊的語(yǔ)法,其中包括一個(gè)圖像計(jì)數(shù)器。例如,-o capture_%04d.jpg表示所有文件都命名為“capture_”,后面跟著一個(gè)計(jì)數(shù)器,然后是.jpg。%04d指定計(jì)數(shù)器的格式,在這種情況下,0表示將前導(dǎo)零添加到數(shù)字上,4表示“使每個(gè)數(shù)字至少有4位”。這很有用,這樣列出您的圖像文件將按時(shí)間順序返回給您。
讓我們舉一個(gè)例子。
libcamera-still -o capture_%04d.jpg --timelapse 5000 -t 30000 --width 1024 --height 768
這將運(yùn)行30秒,每5秒捕獲一張圖像,它們將被命名為capture_0000.jpg到capture_0004.jpg。
請(qǐng)注意,我們是如何將圖像的分辨率降低到更適合我們想要?jiǎng)?chuàng)建的最終視頻的分辨率的。
將圖像組合成視頻
有一個(gè)叫做FFmpeg的方便工具,它能夠?qū)㈧o止圖像序列轉(zhuǎn)換為視頻。我們可以這樣使用它:
ffmpeg -r 2 -i capture_%04d.jpg video.mp4
請(qǐng)注意,我們?nèi)绾问褂锰厥獾?語(yǔ)法來(lái)格式化輸入文件的名稱,方法與我們對(duì) libcamera-still所做的相同。-r參數(shù)給出輸出視頻的幀速率,這里為每秒2幀。我們選擇了MP4格式的輸出文件,并將其命名為video.MP4。
FFmpeg是一個(gè)非常通用的工具,我們建議您學(xué)習(xí)一下。
按下按鍵時(shí)捕獲
我們也可以根據(jù)事件或按鍵進(jìn)行拍攝,而不是定期拍攝。有幾個(gè)新的選項(xiàng)參數(shù)需要學(xué)習(xí)。
–datetime。使用這個(gè)(而不是-o)會(huì)以當(dāng)前日期和時(shí)間命名輸出文件。格式為MMDDhhmmss.jpg,其中MM和DD是月份和日期編號(hào),hh、MM和ss是小時(shí)、分鐘和秒。
-k或–keypress。按下鍵盤上的ENTER鍵時(shí)拍攝圖像。鍵入X并按ENTER鍵退出。
要使用的命令如下:
libcamera-still -t 0 --keypress --datetime
在這里,我們無(wú)限期地運(yùn)行捕獲,所以我們必須鍵入X,然后鍵入ENTER才能退出(或按CTRL+C)。文件的名稱類似于0405102742.jpg,意思是“4月5日上午10:27,42秒”。
響應(yīng)信號(hào)捕獲
對(duì)于那些熟悉Linux信號(hào)(signals)的人來(lái)說(shuō),按下按鍵的另一種選擇是發(fā)送信號(hào)。要做到這一點(diǎn),只需使用-s或--signal而不是-k(或--keypress)。
要向libcamera-still發(fā)送捕獲信號(hào),請(qǐng)首先啟動(dòng)它,然后在另一個(gè)終端窗口中鍵入以下內(nèi)容:
kill -SIGUSR1 `pidof libcamera-still`
您可以使用以下命令強(qiáng)制libcamera-still退出:
kill -SIGUSR2 `pidof libcamera-still`
HDR(高動(dòng)態(tài)范圍)可以在攝像頭模塊3上使能,以使您拍攝的圖像具有更高的對(duì)比度
自動(dòng)對(duì)焦和高動(dòng)態(tài)范圍在撰寫本文時(shí),僅樹莓派攝像頭模塊3支持自動(dòng)對(duì)焦和高動(dòng)態(tài)范圍成像。
自動(dòng)對(duì)焦
使用攝像頭模塊3時(shí),會(huì)在連續(xù)模式下自動(dòng)啟用自動(dòng)對(duì)焦。這意味著攝像頭鏡頭將在必要時(shí)移動(dòng),以在圖像的中心部分保持最佳焦點(diǎn),這可能是大多數(shù)用戶在大多數(shù)時(shí)候想要的。
還可以手動(dòng)關(guān)閉自動(dòng)對(duì)焦并設(shè)置鏡頭的對(duì)焦位置。要做到這一點(diǎn),請(qǐng)使用--lens-position參數(shù),并傳遞一個(gè)以屈光度測(cè)量的值,即焦距的倒數(shù)。因此,在大約0.1米的非常近的距離處聚焦時(shí)傳入值10(即1/0.1)。若要將焦點(diǎn)集中在無(wú)窮大,請(qǐng)傳入0(也就是 1/無(wú)窮大)。您也可以傳入非整數(shù)值。例如:
libcamera-still --lens-position 0 -o infinity.jpg
…將焦點(diǎn)位置設(shè)置為無(wú)窮遠(yuǎn),并且不會(huì)再次移動(dòng)鏡頭。
高動(dòng)態(tài)范圍成像
攝像頭模塊3支持高動(dòng)態(tài)范圍(HDR)成像。要使用它,請(qǐng)?jiān)诿钚兄兄付?-hdr選項(xiàng),例如:
libcamera-still --hdr -o hdr.jpg
請(qǐng)注意,非HDR捕獲可以以4608×2592像素的最大分辨率執(zhí)行,但由于支持HDR所需傳感器的特殊性質(zhì),HDR捕獲僅限于2304×1296像素(正好是非HDR模式寬度和高度的一半)。
-
模塊
+關(guān)注
關(guān)注
7文章
2736瀏覽量
47771 -
攝像頭
+關(guān)注
關(guān)注
60文章
4868瀏覽量
96363 -
樹莓派
+關(guān)注
關(guān)注
117文章
1710瀏覽量
105889
原文標(biāo)題:樹莓派攝像頭模塊:靜態(tài)圖像捕捉
文章出處:【微信號(hào):Arm軟件開發(fā)者,微信公眾號(hào):Arm軟件開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
樹莓派攝像頭問(wèn)題
【新手求助】關(guān)于樹莓派+opencv+攝像頭圖像處理的問(wèn)題?
為什么樹莓派安裝攝像頭成功后/dev/中找不到video設(shè)備?
樹莓派攝像頭
請(qǐng)問(wèn)樹莓派官方的攝像頭能進(jìn)行實(shí)時(shí)監(jiān)控嗎?
【大聯(lián)大友尚安森美半導(dǎo)體感光芯片USB雙目攝像頭模組試用體驗(yàn)】如何固化樹莓派中的攝像頭索引
如何用樹莓派來(lái)連接攝像頭
你需要了解樹莓派中攝像頭的使用
樹莓派的攝像頭應(yīng)該如何啟動(dòng)詳細(xì)教程免費(fèi)下載
微雪電子樹莓派攝像頭專用多路FPC線簡(jiǎn)介
![微雪電子<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>攝像頭</b>專用多路FPC線簡(jiǎn)介](https://file.elecfans.com/web1/M00/B3/40/pIYBAF4Xzt6AIYNOAACrlixxvgI203.png)
微雪電子 樹莓派攝像頭介紹
![微雪電子 <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>攝像頭</b>介紹](https://file.elecfans.com/web1/M00/B2/EB/o4YBAF4X0aqAQ-GTAADLWYWWjnM709.png)
微雪電子樹莓派攝像頭簡(jiǎn)介
![微雪電子<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>攝像頭</b>簡(jiǎn)介](https://file.elecfans.com/web1/M00/B2/EB/o4YBAF4X04qAfyJsAAENJ5BHbgY828.png)
評(píng)論