OpenCV学习笔记(二)

写入视频:

import sys, os
import cv2
imgDir = '/Users/xxx/salient/'
videoName = 'vname'
fps = 30   #帧频
output_size = (720,1280) #先宽,后高
videoWriter = cv2.VideoWriter(videoName + '_out.avi',cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, output_size)  #不指定isColor,默认为1
for i in xrange(215):
    imgname = imgDir+videoName+"_s"+str(i)+".jpg"
    im = cv2.imread(imgname)
    videoWriter.write(im)
videoWriter.release()

参考python-opencv将图片 / 视频帧写为视频,基本就是这样,但写出来的视频无论如何都是6KB,要注意图片格式和VideoWriter里指定的格式要一致,但我的不是这个原因。

因为读入的是显著性图,长这样:

自以为是灰度图(一个错误导致的第二个错误,保存的时候应该选择bmp格式),用了:

videoWriter = cv2.VideoWriter(videoName + '_out.avi',cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, output_size,isColor=False) #isColor=0表示单色图

但是jpg格式是三通道的,如果用jpg保存灰度图,结果是b g r三个通道保存同样的像素值,因此去掉VideoWriter里面的isColor=False或把三个通道分离以后保存任意通道均可。

代码:

import cv2
imgDir = '/Users/xxx/salient/'
videoName = 'vname'
fps = 30
output_size = (720,1280)
videoWriter = cv2.VideoWriter(videoName + '_out.avi',cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, output_size, isColor=False) #指定写单通道视频
for i in xrange(215):
    imgname = imgDir+videoName+"_s"+str(i)+".jpg"
    im = cv2.imread(imgname)
    b,g,r = cv2.split(im) #bgr通道分离
    videoWriter.write(b)  #任意写入一个通道即可
videoWriter.release()
原文地址:https://www.cnblogs.com/zhengmeisong/p/10609559.html