由於工程設計要用到樹莓派的攝像頭進行識別操作,本文將使用Python+OpenCV+Raspi 3B+ 來完成樹莓派CSI攝像頭的配置使用,以及后續的擴展操作(樹莓派照相機)。
CSI攝像頭的連接
將排線的接口查在樹莓派上的對應位置即可,如下圖。
在樹莓派上使能攝像頭功能
一般有兩種方法,在這里我們采用一種博主認為比較方便的方法。
在命令行中輸入:
$ sudo raspi-config
然后在【Enable Camera】一欄里,設置為TRUE即可,此時樹莓派要重啟哦。
攝像頭的調試
測試攝像頭是否能夠正常使用,這時候我們可以利用Raspberry Pi給我們的raspistill來驗證是否能夠使用。
$ raspistill -o test.jpg
在/home/目錄下會生成test.jpg文件,同時會出現攝像頭的畫面。
利用Python庫操作攝像頭
這里,如果你想直接用OpenCV來 操作攝像頭,需進行如下設置(因為樹莓派中的camera module是放在/boot/目錄中以固件形式加載的,不是一個標准的V4L2的攝像頭驅動):
sudo nano /etc/modules
添加一行:bcm2835-v4l2
保存退出,重啟樹莓派,這時就可直接用OpenCV來直接操作攝像頭啦(未測試是否有bug),這里默認讀者在此前已經接觸過OpenCV了🤗。
如果你不想進行上述設置,可以采用下邊的方法。在命令行輸入:
$ pip install picamera
安裝成功后,我們可以新建一個Python文件,輸入以下代碼測試(用攝像頭拍攝一張照片):
from picamera.array import PiRGBArray from picamera import PiCamera import time import cv2 camera = PiCamera() rawCapture = PiRGBArray(camera) time.sleep(0.1) camera.capture(rawCapture, format="bgr") image = rawCapture.array cv2.imshow("Image", image) cv2.waitKey(0)
獲取視頻流的代碼:
from picamera.array import PiRGBArray from picamera import PiCamera import time import cv2 camera = PiCamera() camera.resolution = (640, 480) camera.framerate = 32 rawCapture = PiRGBArray(camera) time.sleep(0.1) # 獲取圖片 for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True): image = frame.array # 顯示 cv2.imshow("Frame", image) key = cv2.waitKey(1) & 0xFF # 清空緩存 rawCapture.truncate(0) # 如果按到鍵盤字母'q'就退出循環 if key == ord("q"): break
以上就是CSI攝像頭的基本操作哦,如果你想通過觸摸屏來做一個基於樹莓派的照相機,給大家提供一個基本思路,用QTDesigner結合Python的PYQT5庫來設計~~
本文結束,感謝閱讀~~