Raspberry Pi Camera
樹莓派官方提供了小型攝像頭,(CMOS Sensor Interface(CSI) 接口攝像頭),用于拍照和錄制視頻。 連接好攝像頭后,進入 raspi-config 打開攝像頭。
命令行工具raspistill和raspivid。
raspistill
拍攝靜態圖片
raspistill -o image.jpg
# 常用參數
-v:調試信息查看
-w:圖像寬度
-h:圖像高度
-rot:圖像旋轉角度,只支持 0、90、180、270 度(這里說明一下,測試發現其他角度的輸入都會被轉換到這四個角度之上)
-o:圖像輸出地址,例如image.jpg,如果文件名為“-”,將輸出發送至標準輸出設備
-t:獲取圖像前等待時間,默認為5000,即5秒
-tl:多久執行一次圖像抓取
# 示例2
raspistill -o image%d.jpg -rot 180 -w 1024 -h 768 -t 20000 -tl 5000 -v
# 圖片的大小,1024 * 768
# 圖片的總捕獲時間 20s
# 圖像旋轉180度
raspivid
錄制視頻
raspivid -o video.h264 -t 10000 # 獲取10s的視頻
raspivid -o video2.h264 -t 10000 -w 1280 -h 720 # 獲取10s的視頻,并設置寬高'
獲得10秒H.264壓縮格式的視頻,存入到文件video.h264。
-
視頻格式轉換
raspivid 通常會將錄制的視頻保存為 .h264 格式的文件,而我們使用的很多播放器可能無法正常播放該格式的視頻文件。 這就需要我們將生成的 .h264 格式的文件封裝到播放器能夠識別的視頻容器格式中(比如封裝為 mp4 格式)。 有很多視頻處理軟件可以達到這個目的,可以直接在樹莓派上進行封裝。這里介紹的是“gpac”中的“MP4Box”。
安裝gpac
apt-get install gpac
將.h264的文件轉換成.mp4的文件
MP4Box -add video.h264 video.mp4
Python picamera 控制相機
先安裝 picamera 庫
pip install picamera
開始使用
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview(alpha=200)
sleep(10)
camera.capture('test.jpg')
camera.end_preview()
常用設置
camera.start_preview(alpha=200) # 還可設置畫面透明度, 其中alpha 的值可為0-255 的任何值
camera.capture() # 拍攝圖片
camera.start_recording('path_to_save.h264') # 開始錄制視頻
camera.stop_recording() # 停止錄制視頻
# 設置分辨率
camera.resolution = (2592,1944) # (1920,1080) # min (64 * 64)
camera.framerate = 15 # 刷新率
camera.annotate_text = 'annotate' # 在圖片中添加文字
camera.brightness = 50 # (0-100) default 50.
camera.rotation = 180 # 旋轉攝像頭,角度可為0,90,180,270
以視頻流方式使用
方法一:mjpg-streamer
-
MJPG-streamer 適用于從webcam攝像頭采集圖像,把他們以流的形式通過基于Ip 的網絡傳輸到擁有瀏覽器的移動設備,通過mjpg-streamer軟件可 以實現將攝像頭中采集到的圖像通過網絡傳輸到瀏覽器網頁上顯 示。
- 安裝
git clone https://github.com/jacksonliam/mjpg-streamer
安裝依賴,編譯并安裝 看readme.md
- 啟動
./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so"
- 使用
在瀏覽器打開IPaddress:8080,或者 http://IP_address:8080/?action=stream 親測也可以用 VLC 打開。
方法二:VLC 視頻軟件
- 安裝 VLC
apt-get install vlc
在樹梅派上啟動 VLC 服務端,并運行。
sudo raspivid -o - -t 0 -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
# 或sudo raspivid -o - -rot 180 -t 0 -fps 30|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
打開VLC軟件,然后打開媒體-》網絡串流-》輸入 http://PI的IP地址:8090 就能查看實時的網絡監控了。