样本处理——视频分解图片、图片合成视频

机器学习 = 训练样本+特征+分类器
深度学习 = 海量的训练样本+人工神经网络
样本总是重要的,有时候一张张图片的寻找总是很费事,可以录个样本的视频,将视频分解为图片,可以获得不同的样本,省时省力。

视频分解图片
API介绍:
cv2.VideoCapture():用于读取视频文件
isOpened():表示视频文件是否打开

import cv2
cap = cv2.VideoCapture('E:\\pictures\\video1.mp4')
isOpened = cap.isOpened() #判断是否打开视频
print(isOpened)
fps = cap.get(cv2.CAP_PROP_FPS) #视频的帧率,即一秒出现多少张图片
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #视频中图片的宽度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #视频中图片的高度
print("fps="+str(fps)+",width="+str(width)+",height="+str(height))
i = 0 #播放图片的个数
while(isOpened): #在视频打开的情况下执行
    if i == 10:
        break
    else:
        i +=1
        (flag,frame) = cap.read()
        #表示读取每一张图片,flag表示读取是否成功,frame表示图片的内容
        fileName = '0image' + str(i) + '.jpg' #每张图片的文件名
        print(fileName)
        if flag == True: #保存视频的前十个图片
            cv2.imwrite(fileName,frame,(cv2.IMWRITE_JPEG_QUALITY,100))
            #(cv2.IMWRITE_JPEG_QUALITY,100)表示采用jpg的格式,100表示的是存储质量
print("end!")

输出:
True
fps=29.008016032064127,width=540,height=960
0image1.jpg
0image2.jpg
0image3.jpg
0image4.jpg
0image5.jpg
0image6.jpg
0image7.jpg
0image8.jpg
0image9.jpg
0image10.jpg
end!

图片合成视频
API:cv2.VideoWriter(‘2.mp4’,-1,5,size)
参数说明:第一个参数表示视频文件名,第二个参数-1表示使用支持的解码器,第三个参数5表示当前的帧率,即一秒播放几张图片,第四个参数size表示视频的尺寸。

import cv2
img = cv2.imread('E:\\python_work\\0image1.jpg')
imgInfo = img.shape
size = (imgInfo[1],imgInfo[0]) #size为长和宽,即width和height
print(size)
videoWrite = cv2.VideoWriter('2.mp4',-1,5,size)
for i in range(1,11):
    fileName = '0image' + str(i) + '.jpg'
    img = cv2.imread(fileName)
    videoWrite.write(img)
print('end!')
发布了25 篇原创文章 · 获赞 0 · 访问量 443

猜你喜欢

转载自blog.csdn.net/qq_45445740/article/details/104491396