【问题标题】:How can I write a series of images into a video using opencv?如何使用opencv将一系列图像写入视频?
【发布时间】:2018-06-20 08:52:14
【问题描述】:

我的代码旨在逐帧循环遍历文件中的现有视频,并在将每个图像帧写入新文件之前向每个帧添加一些文本,这应该是一个视频。此外,我在循环中添加这些图像(每次循环迭代将一个图像写入文件)VS 在代码末尾一次写入所有图像。

最终视频将与输入视频相同,但带有一些文字。原样的代码不会崩溃,但输出的 mp4 文件显示 QuickTime 在我的 Mac 上尝试时无法打开它,而且它似乎没有正确写入。这是我的代码:

cap = cv2.VideoCapture('me_ballin.mov')

fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use lower case
out = cv2.VideoWriter('OUTPUT_PLEASE.mp4', fourcc, 20.0, (640, 640))

while cap.isOpened():
     ret, img = cap.read()
     font                   = cv2.FONT_HERSHEY_SIMPLEX
     bottomLeftCornerOfText = (100,250)
     fontScale              = 2
     fontColor              = (255,255,255)
     lineType               = 2
     photo_text = "BALLINNNN"

     cv2.putText(img, photo_text,
                 bottomLeftCornerOfText,
                 font,
                 fontScale,
                 fontColor,
                 lineType)
     out.write(img)

正如我所说,当我运行代码时,它不会崩溃,但无法打开输出文件 OUTPUT_PLEASE.mp4。想法?

【问题讨论】:

    标签: python-3.x macos file opencv video


    【解决方案1】:

    也许您应该将输出大小设置为等于输入的大小。

    #!/usr/bin/python3
    import cv2
    
    ## opening videocapture
    cap = cv2.VideoCapture(0)
    
    ## some videowriter props
    sz = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
            int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    
    fps = 20
    #fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
    #fourcc = cv2.VideoWriter_fourcc('m', 'p', 'e', 'g')
    fourcc = cv2.VideoWriter_fourcc(*'mpeg')
    
    ## open and set props
    vout = cv2.VideoWriter()
    vout.open('output.mp4',fourcc,fps,sz,True)
    
    cnt = 0
    while cnt<20:
        cnt += 1
        print(cnt)
        _, frame = cap.read()
        cv2.putText(frame, str(cnt), (10, 20), cv2.FONT_HERSHEY_PLAIN, 1, (0,255,0), 1, cv2.LINE_AA)
        vout.write(frame)
    
    vout.release()
    cap.release()
    

    结果:

    【讨论】:

    • 谢谢!我按原样粘贴此代码并运行,但在终端中给出以下警告:OpenCV:FFMPEG:codec id 2 不支持标签 0x6765706d/'mpeg' 和格式'mp4 / MP4(MPEG-4 Part 14)'OpenCV : FFMPEG: 回退到使用标签 0x7634706d/'mp4v' mp4 输出仍然没有打开,大概是因为这个警告的原因。有什么想法吗?
    • 通过更改为 cv2.VideoWriter_fourcc(*'mp4v') 使其工作
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2015-03-10
    • 2011-05-20
    • 2013-09-18
    • 2011-04-10
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多