我的代码总是冻结在我身上。我正在这个代码上测试它。
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运行