libcamera是什么?它是兩個字的合寫,一是函式庫library的簡稱lib,另一是攝影機的camera(或稱影像傳感器imagesensor)。它是一套開放源代碼的函式庫,最初是Nokia為了開發Linux智慧手機而配套發展的軟件,之后Nokia取消這個開發計劃,然軟件被接續發展至今。
libcamera可以用在各種Linux相關的操作系統上,如Android、ChromeOS、Linux等,用其來設定、操控攝影機,因此也能用來操控樹莓派(Raspberry Pi)官方的攝影機模塊(Camera Module),畢竟樹莓派也是跑Linux的。
樹莓派攝影機模塊已經是第三代了,第一代是2013年推出,只有500萬畫素,之后2016年推出800萬畫素的第二代,今(2023)年則推出第三代,并把畫素拉高到1,200萬,第三代發表后第一代也就不再供貨。
如何使用
用libcamera操控攝影機是透過命令行(command line)方式達到的,例如最簡單是先打libcamera-hello(類似一般寫程序的Hello World),就可以看到5秒的鏡頭畫面預覽。
或者可以用libcamera-jpeg來要求攝影機捕捉畫面,并以 .jpg格式存檔,例如打libcamera-jpeg -o test.jpg就會把影像捕捉后輸出(Output, 參數o的由來)成一個test.jpg圖檔。類似的,libcamera-still也是捕捉靜態畫面用的命令,但比較能支持舊版的相關參數選項。
或者還有libcamera-raw指令,能運用攝影機最原生的規格來錄像,不過錄的過程中不會同步顯示預覽畫面,典型的使用方式如libcamera-raw -t 2000 -o test.raw,是指連續錄2秒鐘,并以test.raw為文件名存下錄像的內容;或者還有libcamera-detect指令,一般在Raspberry Pi OS下沒有這個指令,主要是搭配TensorFlow Lite一起使用。
在各種操作設定中,libcamera-vid可能是最為常用且好用的,vid估計是video的簡稱,libcamera-vid是用于一般錄像用的,用它來錄像可以啟動樹莓派主控芯片內的H.264硬件編碼器,可以更快速、順暢且省電的方式進行錄像。
libcamera-vid默認是使用640 x 480分辨率,但可以手動指定分辨率,例如要以Full HD分辨率錄像,命令可以下libcamera-vid –width 1920 –height 1080 -o
full_hd.h264,這樣就可以將錄像內容以full_hd.h264的文件名存下來,編碼格式為H.264。
如果還要指定每秒的錄制畫面張數(framerate),或稱畫面更新率,對岸稱為幀率,也可以加上–framerate 50,50是指每秒50張,數字可以依需要調整。
進一步的也可以調整比特率(bitrate),參數可以下–bitrate或-b都可以,例如libcamera-vid -b 1000000 –width 1920 –height 1080-o test.h264這段指令是指使用1920 x 1080分辨率錄像,比特率為1Mbps,即命令行中的數字1000000。若是把數字調高,從1000000增加到5000000、9000000等,則錄下來的畫質比較好。
除了H.264格式外其實也可以用MJPEG來錄制,命令libcamera -t 20000 –codec mjpeg -o test.mjpeg即表示錄2秒然后以test.mjpeg文件名儲存,錄像的編碼格式為MJPEG。這里要注意,單純指定檔名為 .mjpeg但卻沒有加–codec參數其實是無效的,一定要加。
不僅錄像可能還需要同步錄音,這時得幫樹莓派裝上麥克風,然后透過另外一個函式庫的協助來完成,一樣要下codec參數,命令為libcamera-vid –codec libav –libav-audio -o test.mp4,這里即呼叫了前面純錄像時沒用到的libav函式庫。
到這里可能還有個疑問:開始錄制后該如何停止嗎?很簡單,使用鍵盤組合鍵Ctrl+C即可,要恢復繼續錄就重新下一次命令。或者,也可以用–timeout參數來預先設定錄像時間,最小單位為1毫秒,如果下–timeout 1000就是錄制一秒的意思。
第三代模塊參數設定
接下來要啟用第三代攝影模塊的特有功能,如自動對焦、高動態范圍等,自動對焦要使用到–lens-position(鏡頭位置)參數,參數值是焦距的倒數,類似屈光率,如果數值是10,則1/10是0.1,表示焦距位置為0.1公尺;如果數值是0.5,則1/0.5為2,表示焦距位置為2公尺,范例命令如libcamera-vid –lens-position 0.5 -o test.h264(鏡頭焦距放在2公尺位置)
樹莓派第三代攝影鏡頭的四種類型
至于要啟用高動態范圍功能,就只要下–hdr參數(即high dynamic range)即可,不需要搭配數值,例如libcamera-vid –hdr -o test.h264
要注意的是,啟用高動態范圍就無法使用鏡頭原有的最高分辨率(4608 x 2592),必須在長寬分辨率都打對折(2304 x 1296)。不過,若最后選擇用H.264格式儲存影像,由于H.264格式最高到1920 x 1080,所以開啟與不開啟的分辨率改變幾乎沒有差別。
結語
有關libcamera的參數還非常多,例如可以用串流方式輸出視訊畫面,或設定以時間為單位把原本該連續錄制的圖像文件案自動切割、編號儲存,更多參數有待創客們親自去嘗試、摸索、體驗。
審核編輯:湯梓紅
-
傳感器
+關注
關注
2551文章
51099瀏覽量
753572 -
麥克風
+關注
關注
15文章
637瀏覽量
54825 -
Linux
+關注
關注
87文章
11304瀏覽量
209502 -
攝影機
+關注
關注
0文章
66瀏覽量
10481 -
樹莓派
+關注
關注
116文章
1707瀏覽量
105633
原文標題:用libcamera函式庫操控樹莓派攝影機
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論