Convert video to image or grayscale video

1. Convert videos into pictures

import cv2

video_path=r"D:\Dataset\video/7.mp4"
capture=cv2.VideoCapture(video_path)
# print(capture.get(5))

if capture.isOpened():
    ret,img=capture.read()
    index=0
    while ret:
        if index%20==0:
            imgid=r"D:\Dataset\image/6/"+"%07d"%index+".jpg"
            print(index,ret)
            cv2.imwrite(imgid,img)
        ret,img=capture.read()
        index=index+1
capture.release()

2. Convert video to grayscale video

import cv2
'''
这是一个将彩色视频装换成灰度视频的代码块
'''
cap = cv2.VideoCapture(r'D:\Dataset/video/1.mp4')

fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
out = cv2.VideoWriter(r'D:\Dataset\video/1-1.mp4',fourcc, 30.0, (720,1280),False)

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        out.write(frame)
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

3. Convert pictures into videos

import numpy as np
import cv2
size = (432,288)#这个是图片的尺寸,一定要和要用的图片size一致
#完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息
videowrite = cv2.VideoWriter(r'F:\test.mp4',-1,20,size)#20是帧数,size是图片尺寸
img_array=[]
for filename in [r'F:\Picture\{0}.jpg'.format(i) for i in range(100000)]:#这个循环是为了读取所有要用的图片文件
    img = cv2.imread(filename)
    if img is None:
        print(filename + " is error!")
        continue
    img_array.append(img)
for i in range(100000):#把读取的图片文件写进去
    videowrite.write(img_array[i])
videowrite.release()
print('end!')

4. Turn on the camera

import cv2
import numpy as np
def video_demo():
    capture = cv2.VideoCapture(0,cv2.CAP_DSHOW)#0为电脑内置摄像头
    while(True):
        ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false。 frame为视频的每一帧图像
        frame = cv2.flip(frame, 1)#摄像头是和人对立的,将图像左右调换回来正常显示。
        cv2.imshow("video", frame)
        c = cv2.waitKey(50)
        if c == 27:
            break
video_demo()
cv2.destroyAllWindows()

Guess you like

Origin blog.csdn.net/m0_47405013/article/details/131373840