OpenCV cv2.VideoWrite size different 及 cv2.VideoCapture.get()各类作用

问题:image size is different from the currently set frame size in function CvVideoWriter_VFW::writeFrame

原因:

1 cap = cv2.VideoCapture('F:/weibo.mp4')
2 # Define the codec and create VideoWriter object
3 out = cv2.VideoWriter('F:/output2.avi',-1, 20.0, (640,480))

在上图代码框中,第三行代码,设置了写入的video size (640, 480),与导入的视频的大小不一致

解决办法:

1 cap = cv2.VideoCapture('F:/weibo.mp4')
2 # Define the codec and create VideoWriter object
3 out = cv2.VideoWriter('F:/output2.avi',-1, 20.0, (cap.get(3), cap.get(4)))

cv2.VideoCapture.get() 可以获取video的一些参数。这里参数3 和 4代表当前视频所抓取的帧的长宽。

可以通过点击链接:vc2.VideoCapture.get()获取.

以下为有意义的一部分(截至2018.3)

index              param define                                                                                                                                         
0 cv2.VideoCapture.get(0)     视频文件的当前位置(播放)以毫秒为单位。
  cv2.VideoCapture.get(1) 基于以0开始的被捕获或解码的帧索引
  cv2.VideoCapture.get(2)  视频文件的相对位置(播放):0=电影开始,1=影片的结尾。
  cv2.VideoCapture.get(3)  在视频流的帧的宽度。
  cv2.VideoCapture.get(4)  在视频流的帧的高度。
  cv2.VideoCapture.get(5)  帧速率
  cv2.VideoCapture.get(6)  编解码的4字-字符代码
  cv2.VideoCapture.get(7)  视频文件中的帧数
  cv2.VideoCapture.get(8)  返回对象的格式
  cv2.VideoCapture.get(9)  返回后端特定的值,该值指示当前捕获模式
  cv2.VideoCapture.get(10)  图像的亮度(仅适用于照相机)。
  cv2.VideoCapture.get(11)  图像的对比度(仅适用于照相机)。
  cv2.VideoCapture.get(12)  图像的饱和度(仅适用于照相机)。
  cv2.VideoCapture.get(13)  色调图像(仅适用于照相机)
  cv2.VideoCapture.get(14)  图像增益(仅适用于照相机)(Gain在摄影中表示白平衡提升)
  cv2.VideoCapture.get(15)  曝光(仅适用于照相机)
  cv2.VideoCapture.get(16)  指示是否应将图像转换为RGB布尔标志。
  cv2.VideoCapture.get(17)  × 暂时不支持
  cv2.VideoCapture.get(18)  立体摄像机的矫正标注(目前只有DC1394 v.2.x后端支持这个功能)
posted @ 2018-03-16 19:14  bellum  阅读(4522)  评论(1编辑  收藏  举报