目录
一、导入视频并抽帧
(一)抽帧方式1.0
导入视频,并将抽帧出来的视频放在文件夹里(文件夹需要提前新建)
因为视频和img文件夹不是相对路径,所以我以绝对路径的方式生成
代码如下:
import os
import cv2
import subprocess
v_path='/Users/air/PycharmProjects/Project/static/jcw.mp4'
image_save='/Users/air/Desktop/imgjcw'#新建一个文件夹用于放生成的图片
cap=cv2.VideoCapture(v_path)
frame_count=cap.get(cv2.CAP_PROP_FRAME_COUNT)#返回帧数
print(frame_count)
for i in range(int(frame_count)):
_,img=cap.read()
img=cv2.cvtColor(img,cv2.cv2.COLOR_BGR2GRAY) #cv2.COLOR_RGBGRAY cv2.COLOR_BGR2GRAY
#大写的都是常量
cv2.imwrite('/Users/air/Desktop/imgjcw/image{}.jpg'.format(i),img)#把i传进{}中
最终输出结果为:667,0 即是生成了667帧
参数为视频文件路径,即vc=cv2.VideoCapture(“../testi.mp4”),为打开视频文件
(二)抽帧方式2.0
基于ffmpeg程序将短视频切割获得,具体代码如下:
import cv2
import subprocess
#导入第三方库
video_path="/Users/air/PycharmProjects/Project/static/jcw.mp4"
#设置视频路径
image_save="/Users/air/Desktop/imgjcw1"
#设置图片待保存路径,注:需新建文件夹
cap=cv2.VideoCapture(video_path)
frame_count=cap.get(cv2.CAP_PROP_FRAME_COUNT)
#逐帧裁切视频
for i in range(int(frame_count)):
_,img=cap.read()
cv2.imwrite("/Users/air/Desktop/imgjcw1/image{}.jpg".format(i),img)
#输出每一帧
可以看出和第一种不同,这种输出的结果是彩色的:
二.比较图像相似度以进行视频分镜
(一)基于相等比较相似度
import operator
f