Raspberry Pi 相機模塊:靜態圖像捕捉|奧斯丁國際有限公司 OURSTEAM Internationl
icon教學資源
2023/06/26

Raspberry Pi 相機模塊:靜態圖像捕捉

Raspberry Pi 相機模塊:靜態圖像捕捉

這個#MagPiMonday,我們為您帶來了有關Raspberry Pi 相機模塊的靜態圖像捕獲模式和設置的深入指南。



MagPi #129中,我們引入了 libcamera-still,它允許我們捕獲靜態圖像。但它還有更多選項來控制如何捕獲圖像、文件格式和可用的圖像編碼器。我們將在本教程中發現其中的一些內容。現在,我們將繼續假設您將鍵盤和顯示器直接插入 Raspberry Pi。


以不同分辨率捕獲圖像

默認情況下,libcamera-still 將以相機支持的最大可用分辨率捕獲圖像。例如,對於 HQ 相機,這意味著圖像尺寸為 4056×3040 像素。--width但使用和參數可以輕鬆更改此設置--height例如,如果您想捕獲 1536×1024 像素的圖像,則應使用:




 

圖像編碼器和文件格式

圖像通常以某種方式進行編碼(通常會被壓縮,這樣它們就不會那麼大),然後以標准文件格式保存在磁盤上
 

JPEG 文件
 
libcamera-still 使用的默認文件格式是 JPEG,因為它具有非常廣泛的支持,並且具有有用的壓縮級別。通常,JPEG 文件的擴展名是 .jpg,有時是 .jpeg,正如我們已經看到的那樣。

JPEG 是一種有損壓縮格式,這意味著加載 JPEG 文件的結果不再與您開始時使用的圖像相同,儘管這些差異是您最不會注意到的。作為回報,您可以指定一個品質因數來指示您想要的壓縮程度。在非常低的值下,您的圖像確實會惡化,但在非常高的值下,JPEG 過程將在視覺上無損;也就是說,它看起來確實與原始相機圖像一樣好。

質量因數範圍從 1 到 99,如果您不指定,它將選擇值 93,非正式地相當於“相當高的質量”。要以不同的質量級別保存 JPEG,請使用-q(或等效的--quality)參數,如下所示:



嘗試使用 10 和 50 等質量值,看看會得到什麼!


PNG 文件

PNG(或“便攜式網絡圖形”)是另一種受到廣泛支持的文件和壓縮格式。PNG 是一種無損壓縮格式,這意味著您保證能夠恢復與開始時完全相同的圖像(與 JPEG 不同)。缺點是,PNG 文件通常比 JPEG 文件大,而且創建起來更加困難,需要更長的時間。

-e要保存 PNG 文件,您需要通過或參數告訴 libcamera-still 您想要使用不同的編碼器--encoder,如下所示:


請注意,必須指定 -e 選項才能獲取 PNG 文件 - 單獨更改文件名是不夠的。PNG 不支持質量參數。

DNG 文件

DNG(或“數字負片”)文件與 PNG 文件有很大不同。顧名思義,它們有點類似於我們在將膠片相機沖印成照片之前從膠片相機中獲得的“底片”。在我們的例子中,DNG 文件存儲從圖像傳感器接收到的原始數據,然後 Raspberry Pi 上的硬件將其“開發”為可視(JPEG 或 PNG)圖像。DNG 文件與同一圖像的“開發的”JPEG 或 PNG 版本一起保存。要保存 DNG 文件,請使用-r(或--raw) 參數:



libcamera-still 會自動將 DNG 文件名中的 .jpg 替換為 .dng,在本例中同時給出test.dng test.jpg

許多第三方軟件程序可以交互地“開發”這些 DNG 文件 - 這是一個相當複雜的過程,超出了本指南的範圍。

延時拍攝

延時捕捉是指我們定期捕捉圖像,可能是每分鐘、每小時或每天,然後將它們重新組合成視頻,然後以更快的速度播放它們。libcamera-still 已全部設置為捕獲我們開箱即用所需的圖像。

我們需要介紹這個--timelapse選項,並且我們將回顧一下我們之前見過的幾個選項。

-t–timeout。執行捕獲的時間長度(以毫秒為單位)。在延時拍攝的情況下,libcamera-still 將在這段時間內運行總共捕獲圖像。您可以傳遞值 0,這意味著“無限期運行”(您必須手動停止 libcamera-still,例如通過按鍵盤上的CTRL+C )。
 
–遊戲中時光倒流。每次延時拍攝之間的時間長度(同樣以毫秒為單位)。
-o–output。輸出文件的名稱。對於延時拍攝,我們無法為所有圖像指定相同的名稱,因此我們使用包含圖像計數器的特殊語法。例如,-o capture_%04d.jpg表示所有文件都命名為“capture_”,後跟計數器,然後是 .jpg。%04d指定計數器的格式,在本例中,0 表示向數字添加前導零,4 表示“使每個數字至少有 4 位數字”。這很有用,因此列出您的圖像文件將按時間順序將它們返回給您。

讓我們嘗試一個例子。


 
這將運行 30 秒,每 5 秒捕獲一張圖像,它們將被稱為capture_0000.jpgcapture_0004.jpg

請注意我們如何將圖像的分辨率降低到更適合我們想要創建的最終視頻的分辨率


將圖像組合成視頻

有一個名為 FFmpeg 的方便工具,它能夠將靜態圖像序列轉換為視頻。我們可以這樣使用它:



請注意我們如何使用特殊語法格式化輸入文件的名稱,%就像我們對 libcamera-still 所做的那樣。該-r參數給出輸出視頻的幀速率,在本例中為每秒 2 幀。我們選擇輸出文件為 MP4 格式並將其命名為video.mp4

FFmpeg 是一個高度通用的工具,我們建議您學習一下。




捕獲按下按鍵的時間

我們還可以響應事件或按鍵來進行捕獲,而不是進行常規捕獲。有幾個新的選項參數需要學習。

–日期時間。使用此名稱而不是-o在當前日期和時間之後命名輸出文件。格式為MMDDhhmmss.jpg,其中 MM 和 DD 是月份和日期數字,hh、mm 和 ss 是小時、分鐘和秒。

-k或–keypress。當按下鍵盤上的ENTER時捕獲圖像。鍵入X並按ENTER退出。

所以使用的命令是這樣的:




在這裡,我們無限期地運行捕獲,因此我們必須鍵入X,然後按ENTER退出(或按CTRL+C)。文件的名稱類似於 0405102742.jpg,意思是“4 月 5 日上午 10:27 42 秒”。

捕獲響應信號

對於熟悉 Linux 信號的人來說,按下按鍵的另一種方法是發送信號。為此,只需使用-sor--signal代替 -k(or --keypress)

要將捕獲信號發送到 libcamera-still,請首先啟動它,然後在另一個終端窗口中鍵入以下內容:




你可以強制 libcamera-still 退出:





自動對焦和高動態範圍

在撰寫本文時,僅 Raspberry Pi 相機模塊 3 支持自動對焦和高動態範圍成像。

自動對焦

使用相機模塊 3 時,在連續模式下自動啟用自動對焦。這意味著相機鏡頭將在必要時移動以保持對圖像中心部分的最佳聚焦,這可能是大多數用戶大多數時候想要的。

還可以關閉自動對焦並手動設置鏡頭的焦點位置。為此,請使用該--lens-position參數,並向其傳遞一個以屈光度為單位測量的值,即焦距的倒數。因此,要在約 0.1 m 的非常近的距離處聚焦,請傳入值 10(即 1 / 0.1)。要聚焦於無窮遠,請傳入 0(通俗地說,即 1 / 無窮大的值)。您也可以傳入非整數值。例如:




...將焦點位置設置為無限遠並且不再移動鏡頭。

高動態範圍成像

相機模塊 3 支持高動態範圍 (HDR) 成像。要使用它,請 --hdr在命令行上指定選項,例如:



請注意,非 HDR 捕獲可以以 4608×2592 像素的最大分辨率進行,但 HDR 捕獲由於支持 HDR 所需的傳感器的特殊性,僅限於 2304×1296 像素(正好是寬度和高度的一半)非HDR 模式)。

MagPi #130 現已推出!

您現在就可以從 Tesco、Sainsbury's、Asda、WHSmith 和其他報刊經銷商(包括劍橋的Raspberry Pi 商店)購買最新一期 。它也可以在我們的在線商店購買 ,該商店向世界各地發貨。您還可以通過我們Android 或 iOS上的應用程序獲取它 。



您還可以 訂閱 The MagPi 的印刷版。我們不僅在全球範圍內提供,而且訂閱六個月或十二個月印刷版訂閱的人還可以獲得免費的 Raspberry Pi Pico W!

原文出處: https://www.raspberrypi.com/news/raspberry-pi-camera-module-still-image-capture/
logo
iconiconiconiconicon
icon  電話:04-2375-3535
icon  傳真:04-2256-9949
icon  統編:90386785
icon  E-mail:service@oursteam.com.tw
icon  LINE ID:@oursteam
Inspire every child to create