【问题标题】:Video written through OpenCV on Raspberry Pi not running在 Raspberry Pi 上通过 OpenCV 编写的视频未运行
【发布时间】:2020-12-31 13:15:12
【问题描述】:

我正在努力通过 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

【问题讨论】:

  • 在退出前关闭Writer,完成视频文件
  • 您不能“运行” mp4 文件,因为它不是程序或可执行文件。您应该尝试使用ffplay output.mp4 来播放它。

标签: python opencv live-streaming raspberry-pi4


【解决方案1】:

有两个问题,我想解决:

  • 问题 #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'

使用mp4v 代替DIVX 创建.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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    相关资源
    最近更新 更多