Raspbian中python使用CSI攝像頭

Raspbian中python使用CSI攝像頭

概述:csi攝像頭是樹莓派的官方攝像頭,python要呼叫可以有兩種辦法,第一種是用官方的picamera包,第二種是使用opencv.

0. 啟用攝像頭

無論使用哪種方法,都先確保攝像頭啟用。在Shell中輸入

sudo raspi-config

移動游標至選單中的 “Enable Camera(啟用攝像頭)”,將其設為Enable(啟用狀態)。完成之後重啟樹莓派。
這裡寫圖片描述

1.使用picamera包

安裝picamera

pip install picamera
或者
apt-get install picamera

具體操作方法見官方手冊

2.使用opencv

這裡要注意一點,樹莓派官方攝像頭插入後沒有/dev/video0節點,這就導致無法直接用opencv呼叫。

解決辦法:樹莓派中的camera module是放在/boot/目錄下以韌體的形式載入的,不是一個標準的v4l2的攝像頭ko驅動,所以載入起來之後會找不到/dev/video0的裝置節點。這是因為這個驅動是在底層的,v4l2這個驅動框架還沒有載入,所以要在/etc/modules裡面新增一行bcm2835-v4l2(是4L2,不是412,小寫的L),這句話意思是在系統啟動之後會載入bcm2835-v4l2這個模組,這個模組在樹莓派系統的/lib/modules/xxx/xxx/xxx下面,新增之後重啟系統,就會在/dev/下面發現video0裝置節點了。

# 在/etc/modules裡新增這一行
bcm2835-v4l2

這樣之後就可以用opencv呼叫,可以嘗試執行如下程式碼進行驗證:

import numpy as np
import cv2 as cv
def take_photo():
cap = cv.VideoCapture(0)
ret, photo = cap.read()
if ret:
print "take photo successfuly"
cv.imwrite("./photo.png", photo)
else:
print "Error! Photo failed!"
if __name__ == "__main__":
take_photo()

看看是否生成./photo.png照片。

也可以用mplaer播放器播放試試

sudo apt-get install mplayer
sudo mplayer tv://