微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenCv - 输出视频未播放

如何解决OpenCv - 输出视频未播放

我想使用 OpenCv 编写视频并在不同的秒内处理每一帧。

我正在使用 cv2.VideoWriter,但输出文件显示了我的视频的第一帧并且没有播放。我想在第一帧上添加文本并且它做到了,但它不会继续播放视频的其余部分。 从下面的代码中可以看出,它为新处理的视频创建了一个新的输出文件。 它确实创建了 mp4 文件,但只显示添加文本的第一帧,并且没有播放。

有什么建议为什么会这样吗?

这是我的代码,我使用的是 Spyder 和 windows。

fps = int(round(cap.get(5)))
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video_file,fourcc,fps,(frame_width,frame_height))

while(True):
# Capture frame-by-frame
    ret,frame = cap.read()
    if ret:    
       if cv2.waitKey(28) & 0xFF == ord('q'):
            break
       if between(cap,10000):            
           font = cv2.FONT_HERShey_COMPLEX_SMALL
           cv2.putText(frame,'hello',org=(10,600),fontFace=font,fontScale=10,color=(255,0),thickness=4)

           pass
         
           
# Our operations on the frame come here
           out.write(frame)

# display the resulting frame
           cv2.imshow('frame',frame)

解决方法

正是我在你的代码中找不到问题,因为你没有给出 between 函数。但是,您可以尝试以下代码段:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)
if (cap.isOpened() == False):
    print("Unable to read camera feed")
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
fps = int(round(cap.get(5)))
out = cv2.VideoWriter('output.mp4',cv2.VideoWriter_fourcc(*'mp4v'),fps,(frame_width,frame_height))

while (True):
    ret,frame = cap.read()

    if ret == True:
        cv2.putText(frame,'hello',org=(10,300),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=5,color=(255,0),thickness=4)
        out.write(frame)
        cv2.imshow('frame',frame)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。