通过 OpenCV 在 Raspberry Pi 而不是 运行 上编写的视频

Video written through OpenCV on Raspberry Pi not running

我正在 Raspberry PI 4 B+ 上通过 opencv 保存来自 USB 网络摄像头的实时提要。这是代码

import cv2
cap = cv2.VideoCapture(0)
fourcc=cv2.VideoWriter_fourcc(''D','I','V','X'')
out=cv2.VideoWriter('output.mp4',fourcc,25,(640,480))
while True:
    ret, frame = cap.read()
    cv2.imshow('frame', frame) 
    out.write(frame) 
    if cv2.waitKey(1) & 0xFF== ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

视频文件已创建,但我无法运行该文件。我也尝试过不同的格式,如 'XVID'、'MJPG'、'H264',但遇到了同样的问题。 我的opencv版本是4.3.038

有两个问题,我想解决:

  • 问题 #1:DIVX 应声明为:

  • fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')
    
  • 问题 #2:


  • 您已声明创建大小为 (640, 480) 的视频。因此,您返回的每一帧也应该是 (640, 480)

  • frame = cv2.resize(frame, (640, 480))
    

但是如果你将它与DIVX一起使用,你会得到一个警告:

OpenCV: FFMPEG: tag 0x58564944/'DIVX' is not supported with codec id 12 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'

而不是 DIVX 使用 mp4v 来创建 .mp4 个视频。

代码:


import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
out = cv2.VideoWriter('output.mp4', fourcc, 25, (640, 480), isColor=True)
while True:
    ret, frame = cap.read()
    frame = cv2.resize(frame, (640, 480))
    cv2.imshow('frame', frame)
    out.write(frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
out.release()
cv2.destroyAllWindows()