我正在尝试使用OpenCV在python中创建一个TimeLapse创建者,并且具有以下代码:
import cv2
import os
import string
directory = (r"C:\Users\Josh\Desktop\20130216")
video = cv2.VideoWriter(r"C:\Users\Josh\Desktop\video.avi", cv2.cv.CV_FOURCC('F','M','P', '4'), 15, (1536, 1536), 1)
for filename in os.listdir(directory):
if filename.endswith(".jpg"):
video.write(cv2.imread(filename))
cv2.destroyAllWindows()
video.release()
该文件夹中有1,440张图片,但video.avi的大小仅为5.54kb,播放时输出为空。任何人都可以在我的代码中看到任何缺陷,并给我任何帮助吗?
答案 0 :(得分:1)
似乎是,你有没有ffmpeg支持的窗户。 我遇到了同样的问题,OpenCV 2.4 VideoCapture not working on Windows帮助了我。
应将opencv246 \ opencv \ 3rdparty \ ffmpeg \ opencv_ffmpeg.dll复制到 C:\ Python27 \ opencv_ffmpeg246.dll
您的代码在代码中定义为1536x1536,因此您的所有.jpg文件都应与该大小匹配。
video = cv2.VideoWriter(r"C:\Users\Josh\Desktop\video.avi",
cv2.cv.CV_FOURCC('F','M','P', '4'), 15, (1536, 1536), 1)
答案 1 :(得分:0)
cv2.VideoWriter无法使用正确的代码保存视频内容的原因是输出视频的宽度,高度大小与输入视频的宽度,高度大小不同。
您需要匹配它们
答案 2 :(得分:0)
我遇到了同样的问题,因为输入视频大小(width
和height
)不能算出输出文件。
我的显示6KB。
我相信这是因为openCV并非旨在执行此类工作(记录/保存视频)
要解决此问题,只需匹配width
和height
width, height = frame.shape
out = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc('M','J','P','G'), fps, (width, height))