由于工程设计要用到树莓派的摄像头进行识别操作,本文将使用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库来设计~~
本文结束,感谢阅读~~