天天看点

3、python 视频转图片及图片转视频、裁剪、创建图片压缩成视频

背景:从视频中获取图片,进行数据标注,然后进行训练;

指定文件夹读取视频然后产生相应图片工具

# -*- coding: utf-8 -*-
import os
import cv2
import os.path
import glob
source_path = r'G:\1'
destion_path = r'G:\1'


files = sorted(glob.glob(os.path.join(source_path, "*.avi")))
c=0
for path_video in files:
    vc = cv2.VideoCapture(path_video)
    (filepath, tempfilename) = os.path.split(path_video)
    (filename, extension) = os.path.splitext(tempfilename)

    dir_filename=os.path.join(filepath,filename)
    if not os.path.exists(dir_filename):
        os.mkdir(dir_filename)
    rval = vc.isOpened()
    while rval:
        c = c + 1
        rval, frame = vc.read()
        if rval and c%10==0:
            cv2.imwrite(os.path.join(dir_filename ,".".join([filename +str(c/10) , 'jpg'])), frame)
        elif rval:
            pass
        else:
            break
    vc.release()      

图片进行180°翻转;

from PIL import Image
import os
import os.path
 
rootdir = r'picture'
for parent, dirnames, filenames in os.walk(rootdir):
    for filename in filenames:
        print('parent is :' + parent)
        print('filename is :' + filename)
        currentPath = os.path.join(parent, filename)
        print('the fulll name of the file is :' + currentPath)
 
        im = Image.open(currentPath)
        out = im.transpose(Image.ROTATE_180)
        newname=filename
        out.save(rootdir+'/'+newname)      
from PIL import Image
import os
fin = 'picture'
fout = 'picture'
for file in os.listdir(fin):
    file_fullname = fin + '/' +file
    (filepath, tempfilename) = os.path.split(file_fullname)
    (filename, extension) = os.path.splitext(tempfilename)
    if extension=='.jpg':
       img = Image.open(file_fullname)
       a = [179, 296,  1119, 704]
       box = (a)
       roi = img.crop(box)
       out_path = fout + '/' + file
       roi.save(out_path)      
# coding=utf-8
import os
import cv2
import glob
img_root = 'C:\\Users\\PHILIPS\\Desktop\\img\\img\\math\\glass\\cover'
fps = 22


fourcc = cv2.VideoWriter_fourcc(*'MJPG')
videoWriter = cv2.VideoWriter('C:\\Users\\PHILIPS\\Desktop\\img\\img\\math\\glass\\saveVideo.avi',fourcc,fps,(1920,1080))#最后一个是保存图片的尺寸

alist=[]
for root, ds, fs in os.walk(img_root):
    for item in fs:
        alist.append(item)

dict={}
for i in range(0,len(alist)):
    for j in range(0,len(alist)):
        str=alist[j].split('_')
        num=eval(str[-1].split('.')[0])
        dict[num]= alist[j]

for i in sorted (dict) :
    print(os.path.join(img_root,dict[i]))
    frame = cv2.imread(os.path.join(img_root,dict[i]))
    videoWriter.write(frame)

videoWriter.release()      
from PIL import Image
import cv2
fps = 25
size=(1920, 1080)

img = Image.new("RGBA",size,(0,255,0))#RGBA的真色模式
img = img.convert("RGB")#jpg格式必须转换,单色和灰色不用
img.save("create.jpg")

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
videoWriter = cv2.VideoWriter('saveVideo.avi', fourcc, fps,size)  # 最后一个是保存图片的尺寸

img=cv2.imread("create.jpg")
while True:
    videoWriter.write(img)
    print("create video")
videoWriter.release()