目录
前言
为了跑机器视觉,我们需要一个算力强大的电脑,树莓派在一众单板计算机里面还算比较便宜🥲。博主购入树莓派5,主要也是为了跑视觉,本文将实现树莓派5 OpenCV的下载,以及开启CSI和USB摄像头。(注:两种摄像头以及其它各种外设都需要在树莓派开机之前就插上去,否则大概率是用不了的。)
一、OpenCV下载
sudo apt install libopencv-dev python3-opencv
下载opencv库
完成之后终端进入python,测试一下OpenCV有没有安装好,输入以下代码,查看以下cv版本,若没有报错,就安装成功了!!!
import cv2
cv2.__version__
二、打开CSI摄像头
注意一下CSI摄像头的安装方向:金黄色导电触片对着接口白色的那一面插进去(此处缺图)。
首先安装一下CSI摄像头的驱动库(树莓派5CSI摄像头的使用似乎和树莓派4有点点不一样):
终端输入
sudo apt install libcamera-apps libcamera-dev python3-picamera2
下载libcamera和picamera2的两个库:
进入Thonny(Geany也欧克的),开始编程(有的时候在树莓派上打大写字母可能会打不出来,可以试试按着Caps键不要松,然后输入字母(什么原因博主也不知道,如果没有这个问题就自动忽略一下吧)):
以下是打开CSI摄像头的代码:
import cv2
import libcamera
from time import sleep
from picamera2 import Picamera2
picam2 = Picamera2()
config = picam2.create_preview_configuration(main={"format":'RGB888',"size":(640,480)},
raw={"format":'SRGGB12',"size":(1920,1080)})
config["transform"] = libcamera.Transform(hflip = 0, vflip = 1)
picam2.configure(config)
picam2.start()
while True:
frame = picam2.capture_array()
cv2.imshow("frame", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
sleep(0.01)
cv2.destroyAllWindows()
运行一下,嘻嘻,CSI摄像头启动成功!!!😘
三、USB摄像头的使用
相比于CSI摄像头,USB摄像头的使用就简单了很多,不用额外安装库,直接使用cv中的cv2.VideoCapture(0)函数即可(没有安装拼音输入法的可以将print当中中文改成英文的):
import cv2
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print(“无法打开摄像头”)
exit()
while True:
ret, frame = cap.read()
if not ret:
print("无法获取图像")
break
cv2.imshow("Camera Feed", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
运行代码就可以打开USB摄像头了:
四、对比一下CSI摄像头与USB摄像头
个人感觉USB摄像头的使用更方便一点,编程时,可以直接在电脑上写代码、测试,然后复制粘贴到树莓派中就可以直接使用,但是如果在树莓派上使用的是CSI摄像头就需要修改不少函数(可以喂给豆包,豆包改这种代码还是很靠谱的)。但是一般来说,USB摄像头的分辨率都比较高,放在树莓派上跑帧数可能较低(很逆天,在电脑上跑出来25帧的USB摄像头,在树莓派上只跑出了10帧😡),CSI摄像头因为分辨率稍差,跑出的帧数就好很多(博主使用的可以跑出30帧😃)。