樹莓派3 B+ 的攝像頭簡單使用(video-streamer)

分類:IT技術 時間:2017-09-25

一、首先在某東上購買樹莓派攝像頭

我的買的硬件張這個樣子的(CSI接口攝像頭):

                     正視圖                                                        後視圖

  

  當然我買的不是正版的,價格在50多塊錢吧。所以也不算很貴,買回來看看,電路也不算特別的復雜,自己做的話應該也是沒有問題的~(註意買回來的攝像頭前面都是有一個小的透明薄膜的,但是很影響攝像頭的成像效果,用的時候撕掉它,不用的時候可以去掉。)

簡單闡述了解CSI接口攝像頭參考:http://www.cnblogs.com/lifan3a/articles/5010633.html):

  • 全稱CMOS Sensor interface(CSI)
  • 前端-配置邏輯接口以便支持大多數通用的可用的CMOS攝像頭接口。
  • 支持CCIR656視頻接口以及傳統的攝像頭接口。
  • 8位數據口,支持方便YCC,YUV,Bayer或者是RGB的數據格式輸入。
  • 完全可控的8-bit或16-bit數據到32-bit的FIFO進行打包
  • 32*32大小的FIFO存儲接受到的的圖像像素數據,該FIFO可以通過可編程的IO或者是DMA進行讀取.
  • 後端-提供了直接到eMMA的預處理PrP塊接口(PrP和PP組成了MX27圖形加速器eMMA,PrP和PP能夠用來給視頻做預處理和後期處理,例如,放大,縮小,顏色轉換)
  • 提供sensor的可屏蔽中斷源,該中斷源也是中斷可控的: 開始Frame,結束Frame,Change of Field,FIFO Full
  • 提供給外部sensor用的,可配置的主時鐘頻率
  • 由統計數據產生的自動曝光(AE)和自動白平衡(AWB)控制。

二、接下來開始安裝驅動使能樹莓派的相關模塊:

首先使用 ls指令來查看是否加載到了對應的video device設備:

ls -al /etc

所以沒有發現我們的設備,接下來要做的是添加攝像頭的驅動程序.ko文件和對應的raspiberry B3+的硬件使能問題:

1、添加驅動程序文件進來:

sudo vim /etc/modules

在最後添加如下的代碼:

bcm2835-v4l2

這樣就完成了在啟動過程中加載camera驅動的前提,註意一個問題就是/etc/modules文件的修改權限是super admin所以,記得使用sudo vim /etc/modules.

2、修改Raspberry的啟動配置使能項:

sudo raspi-config

得到如下的配置界面:

選擇Interfacing Option,選中Select然後Enter進入,如下圖所示:

接下來機會問你是否同意使能Pi camera,選擇是然後會讓你重啟,,重啟就好了:

  選擇 “是”

3、重啟完之後,我們的基本的操作就完成了,下來來看看/dev下面是否存在攝像頭設備的問題:

ls -al /dev/ | grep video

好得,沒問題了,找到了我們想要的看到的設備:video0 device

註:可能提示這樣的問題(如果在以上工作都完成的情況下,攝像頭還是不能正常的使用或者驅動,請先檢查硬件的連接的問題,可能是排線沒有很好的插穩,或者是攝像頭本身的問題。):

mmal mmal_vc_component_create failed to create component 'vc ril camera' (1:ENOMEM)
mmal mmal_component_create_core could not create component 'vc ril camera' (1) mmal Failed to create camera component
mmal main Failed to create camera component
mmal Camera is not detected. Please check carefully the camera module is installed correctly

上面的問題參考這裏:http://blog.sina.com.cn/s/blog_e4008c660101hkd9.html

三、下面簡單的使用操作樹莓派的攝像頭:

1、我們使用rapistill指令來截圖(當你在運行此指令的時候,樹莓派上的指示燈會亮哦~):

raspistill -o image.jpg

采集的效果如下所示:

這裏我們看到采集的圖片的大小是2592X1944=5038848大約就是500W的像素了。看起來也是非常的清晰啦~確實很滿意的啊!!

這裏講一下raspistill命令的相關參數和實驗的具體效果:

-v:調試信息查看
-w:圖像寬度
-h:圖像高度
-rot:圖像旋轉角度,只支持 0、90、180、270 度(這裏說明一下,測試發現其他角度的輸入都會被轉換到這四個角度之上)
-o:圖像輸出地址,例如image.jpg,如果文件名為“-”,將輸出發送至標準輸出設備
-t:獲取圖像前等待時間,默認為5000,即5秒
-tl:多久執行一次圖像抓取

執行下面的指令:

raspistill -o image%d.jpg -rot 180 -w 1024 -h 768 -t 20000 -tl 5000 -v

接著下面就會輸出一系列的捕獲的信息,

如圖片的大小

圖片的總捕獲時間

圖像是否旋轉,

是否水平反轉垂直反轉:

下面是最後的捕獲的結果:

註:這裏解釋一下圖片的采集數量和-t參數以及-tl參數的相關關系:N_Picture = -t(獲取圖像前等待時間)/-tl(多久執行一次抓取時間) + 1。所以有20000/5000+1 = 5張圖片

2、使用raspivid指令來生成.h246的文件

raspivid -o mykeychain.h264 -t 10000 -w 1280 -h 720  

這樣就會在當前文件夾下面生成mykeychain.h264的文件:

如果你想改變拍攝時長,只要通過 "-t" 選項來設置你想要的長度就行了(單位是毫秒)。

如果你想改變圖像的分辨率,使用 "-w" 和 "-h" 選項將分辨率降為 1280x720等等。

四、使用VLC等來實現http的視屏流傳輸:

1、首先需要在你的樹莓派上面安裝VLC的軟件

sudo apt-get update
sudo apt-get install vlc --fix-missing
sudo apt-get install vlc

2、啟動你的樹莓派攝像頭

sudo raspivid -o - -rot 180 -t 0 -fps 30|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264  

3、打開你PC機電腦上的VLC軟件,選擇打開網絡串流(Ctrl+N),輸入上面指令的端口號以及對應的樹莓派的IP地址

(如下圖所示我的樹莓派的IP地址是192.168.1.129),運行結果如下圖所示,當然也發現http的視頻流的確比較卡,當然我采用的視頻的畫質是500W像素的畫質,所以視頻的質量比較差,當我將視頻的畫質調節到720*360時,感覺非常的流暢。(@局域網測試環境)

後續在使用python Opencv來控制調用樹莓派的攝像頭做些有意思的東西~

                                                                                        完~


Tags: 攝像頭 接口 樹莓 數據 中斷 預處理

文章來源:


ads
ads

相關文章
ads

相關文章

ad