1、镜像版本比较
(1)新版本镜像sudo raspi-config中没有使能摄像头的选项
(2)摄像头驱动不同,在sudo nano /boot/config.txt中查看摄像头驱动
2、检测摄像头是否正常
(1)ls /dev/video*查看是否有摄像头设备
(2)以下命令之一尝试打开摄像头
libcamera-hello
或
ffplay -f v4l2 -framerate 60 -video_size hd720 /dev/video0
或
raspivid -o b.h264 -t 10000 -w 1280 -h 720
只要有一个命令可以成功打开摄像头,一般就没问题,虽然vcgencmd get_camera会显示detected=0(我也不知道为什么显示检测不到 T T)
3、opencv测试打开摄像头
要是实在不放心,可以写个测试代码,调用opencv打开摄像头。测试代码如下:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while(1):
# get a frame
ret, frame = cap.read()
# show a frame
cv2.imshow("capture", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
#退出并拍照
cv2.imwrite("takephoto2.jpg", frame)
print("take Photo Ok")
break
cap.release()
cv2.destroyAllWindows()
测试前先安装好opencv-python和opencv_contrib_python
4、opencv+pyqt5结合
问题1:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. Available platform plugins are: eglfs, vkkhrdisplay, linuxfb, minimalegl, offscreen, wayland-egl, minimal, xcb, vnc, wayland.
原因:pyqt5和opencv-python版本冲突导致的,因为在opencv-python4.2.0以上的版本,opencv-python使用了qt库支持。
解决办法:在/home/pi/.local/lib/python3.9/site-packages/cv2找到并删除qt文件夹
问题2:
调用摄像头无效果
原因:代码中使用的是cv2.VideoCapture(self.camSelect, cv2.CAP_DSHOW)。而cv2.CAP_DSHOW
专门用于 Windows 系统,在 Linux 或 macOS 上使用它会报错或无效果。
解决办法:改为cv2.VideoCapture(self.camSelect)
目前遇到的问题就这些了,后续如果遇到新的问题会持续在此更新!