代码之家  ›  专栏  ›  技术社区  ›  Gordon13

python opencv videowriter生成的视频索引已损坏

  •  0
  • Gordon13  · 技术社区  · 7 年前

    我想把一系列的画面转换成视频。在过去,我已经成功地让它工作了很多次,但由于某些原因,现在它不再工作了。我一辈子都搞不清我到底做错了什么。

    尝试播放此脚本生成的视频时,视频文件会显示缩略图,但当使用默认的Windows 10视频播放器播放视频时,它会失败并显示视频已损坏。

    我试着用vlc播放视频,这次它工作了,但是它说索引坏了,需要重建。然后播放视频。

    有什么想法吗?

    import sys, os, cv2, re, csv
    import numpy as np
    
    
    if __name__ == "__main__":
        print "Processing frames..."
        vHeight = 480
        vWidth = 640
    
        to_be_processed_path = "./frames"
        video_name = "video_v2.avi"
        filename_format = re.compile("frame\d{5}\.png")
    
        video = cv2.VideoWriter(video_name, -1, 30, (vWidth, vHeight))
    
        for name in [img for img in filter(filename_format.search, os.listdir(to_be_processed_path))]:
    
            img_to_be_processed_path = os.path.normpath(os.path.join(to_be_processed_path, name))
            img_processed = cv2.imread(img_to_be_processed_path, cv2.IMREAD_COLOR)
            img_processed = cv2.cvtColor(img_processed, cv2.COLOR_BGR2RGB)
            if img_processed is None:
                raise Exception("Image not found: %s" % img_to_be_processed_path)
    
            # write text on video
            cv2.putText(img_processed,
                "Hello world",
                (700, vHeight/10,),
                cv2.FONT_HERSHEY_SIMPLEX,
                0.5,
                (255,255,255,))
            video.write(img_processed)
    
        video.release()
        cv2.destroyAllWindows()
    
        print "Done"
    
    0 回复  |  直到 7 年前