libcamera是什么?它是兩個字的合寫,一是函式庫library的簡稱lib,另一是攝影機(jī)的camera(或稱影像傳感器imagesensor)。它是一套開放源代碼的函式庫,最初是Nokia為了開發(fā)Linux智慧手機(jī)而配套發(fā)展的軟件,之后Nokia取消這個開發(fā)計劃,然軟件被接續(xù)發(fā)展至今。
libcamera可以用在各種Linux相關(guān)的操作系統(tǒng)上,如Android、ChromeOS、Linux等,用其來設(shè)定、操控攝影機(jī),因此也能用來操控樹莓派(Raspberry Pi)官方的攝影機(jī)模塊(Camera Module),畢竟樹莓派也是跑Linux的。
樹莓派攝影機(jī)模塊已經(jīng)是第三代了,第一代是2013年推出,只有500萬畫素,之后2016年推出800萬畫素的第二代,今(2023)年則推出第三代,并把畫素拉高到1,200萬,第三代發(fā)表后第一代也就不再供貨。
如何使用
用libcamera操控攝影機(jī)是透過命令行(command line)方式達(dá)到的,例如最簡單是先打libcamera-hello(類似一般寫程序的Hello World),就可以看到5秒的鏡頭畫面預(yù)覽。
或者可以用libcamera-jpeg來要求攝影機(jī)捕捉畫面,并以 .jpg格式存檔,例如打libcamera-jpeg -o test.jpg就會把影像捕捉后輸出(Output, 參數(shù)o的由來)成一個test.jpg圖檔。類似的,libcamera-still也是捕捉靜態(tài)畫面用的命令,但比較能支持舊版的相關(guān)參數(shù)選項。
或者還有l(wèi)ibcamera-raw指令,能運(yùn)用攝影機(jī)最原生的規(guī)格來錄像,不過錄的過程中不會同步顯示預(yù)覽畫面,典型的使用方式如libcamera-raw -t 2000 -o test.raw,是指連續(xù)錄2秒鐘,并以test.raw為文件名存下錄像的內(nèi)容;或者還有l(wèi)ibcamera-detect指令,一般在Raspberry Pi OS下沒有這個指令,主要是搭配TensorFlow Lite一起使用。
在各種操作設(shè)定中,libcamera-vid可能是最為常用且好用的,vid估計是video的簡稱,libcamera-vid是用于一般錄像用的,用它來錄像可以啟動樹莓派主控芯片內(nèi)的H.264硬件編碼器,可以更快速、順暢且省電的方式進(jìn)行錄像。
libcamera-vid默認(rèn)是使用640 x 480分辨率,但可以手動指定分辨率,例如要以Full HD分辨率錄像,命令可以下libcamera-vid –width 1920 –height 1080 -o
full_hd.h264,這樣就可以將錄像內(nèi)容以full_hd.h264的文件名存下來,編碼格式為H.264。
如果還要指定每秒的錄制畫面張數(shù)(framerate),或稱畫面更新率,對岸稱為幀率,也可以加上–framerate 50,50是指每秒50張,數(shù)字可以依需要調(diào)整。
進(jìn)一步的也可以調(diào)整比特率(bitrate),參數(shù)可以下–bitrate或-b都可以,例如libcamera-vid -b 1000000 –width 1920 –height 1080-o test.h264這段指令是指使用1920 x 1080分辨率錄像,比特率為1Mbps,即命令行中的數(shù)字1000000。若是把數(shù)字調(diào)高,從1000000增加到5000000、9000000等,則錄下來的畫質(zhì)比較好。
除了H.264格式外其實(shí)也可以用MJPEG來錄制,命令libcamera -t 20000 –codec mjpeg -o test.mjpeg即表示錄2秒然后以test.mjpeg文件名儲存,錄像的編碼格式為MJPEG。這里要注意,單純指定檔名為 .mjpeg但卻沒有加–codec參數(shù)其實(shí)是無效的,一定要加。
不僅錄像可能還需要同步錄音,這時得幫樹莓派裝上麥克風(fēng),然后透過另外一個函式庫的協(xié)助來完成,一樣要下codec參數(shù),命令為libcamera-vid –codec libav –libav-audio -o test.mp4,這里即呼叫了前面純錄像時沒用到的libav函式庫。
到這里可能還有個疑問:開始錄制后該如何停止嗎?很簡單,使用鍵盤組合鍵Ctrl+C即可,要恢復(fù)繼續(xù)錄就重新下一次命令。或者,也可以用–timeout參數(shù)來預(yù)先設(shè)定錄像時間,最小單位為1毫秒,如果下–timeout 1000就是錄制一秒的意思。
第三代模塊參數(shù)設(shè)定
接下來要啟用第三代攝影模塊的特有功能,如自動對焦、高動態(tài)范圍等,自動對焦要使用到–lens-position(鏡頭位置)參數(shù),參數(shù)值是焦距的倒數(shù),類似屈光率,如果數(shù)值是10,則1/10是0.1,表示焦距位置為0.1公尺;如果數(shù)值是0.5,則1/0.5為2,表示焦距位置為2公尺,范例命令如libcamera-vid –lens-position 0.5 -o test.h264(鏡頭焦距放在2公尺位置)
樹莓派第三代攝影鏡頭的四種類型
至于要啟用高動態(tài)范圍功能,就只要下–hdr參數(shù)(即high dynamic range)即可,不需要搭配數(shù)值,例如libcamera-vid –hdr -o test.h264
要注意的是,啟用高動態(tài)范圍就無法使用鏡頭原有的最高分辨率(4608 x 2592),必須在長寬分辨率都打?qū)φ郏?304 x 1296)。不過,若最后選擇用H.264格式儲存影像,由于H.264格式最高到1920 x 1080,所以開啟與不開啟的分辨率改變幾乎沒有差別。
結(jié)語
有關(guān)libcamera的參數(shù)還非常多,例如可以用串流方式輸出視訊畫面,或設(shè)定以時間為單位把原本該連續(xù)錄制的圖像文件案自動切割、編號儲存,更多參數(shù)有待創(chuàng)客們親自去嘗試、摸索、體驗。
審核編輯:湯梓紅
-
傳感器
+關(guān)注
關(guān)注
2561文章
52198瀏覽量
761691 -
麥克風(fēng)
+關(guān)注
關(guān)注
15文章
653瀏覽量
55439 -
Linux
+關(guān)注
關(guān)注
87文章
11420瀏覽量
212316 -
攝影機(jī)
+關(guān)注
關(guān)注
0文章
70瀏覽量
10644 -
樹莓派
+關(guān)注
關(guān)注
120文章
1906瀏覽量
106693
原文標(biāo)題:用libcamera函式庫操控樹莓派攝影機(jī)
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
大聯(lián)大詮鼎集團(tuán)推出OTUS(歐特斯)魚眼校正的網(wǎng)絡(luò)攝影機(jī)及全景式運(yùn)動攝影機(jī)整體解決方案
qt源碼庫在樹莓派中的部署方法
攝影機(jī)術(shù)語(二)
攝影機(jī)術(shù)語(三)
淺談香蕉派與樹莓派的不同
歐度宣布與RED數(shù)字攝影機(jī)達(dá)成戰(zhàn)略合作
攝像機(jī)攝影機(jī)的聲學(xué)防水透氣膜對設(shè)備的性能有沒有影響
索尼全畫幅電影攝影機(jī)FX3在京東開啟預(yù)約
虛擬拍攝對攝影機(jī)有什么要求?
Linux樹莓派開發(fā)之wiringPi庫,樹莓派控制繼電器

評論