Python opencv cv2.VideoCapture freeze



我的代码总是冻结在我身上。我正在这个代码上测试它。

import cv2
cap = cv2.VideoCapture('/dev/video0') # frozen
ret, frame = cap.read()
print(ret, frame)

我的配置是

  • 树莓皮

  • Python 3.9.2

  • 佳能600D

此命令正常工作

gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

大炮600D可能有一个错误。

您应该为代码添加循环。如果你不这样做,你总是只能从相机中得到一帧。示例:

import cv2

cap = cv2.VideoCapture('/dev/video0') # frozen
while true:
ret, frame = cap.read()
if not ret:
continue
print(ret, frame)

需要运行

sudo modprobe v4l2loopback

gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

gphoto2运行

最新更新