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