目录
基本思路
1.将视频打散为图片
2.选择合适的方法(相等、numpy、哈希)比较图像相似度
3.根据相似度,去除重复镜头
5.1 将视频打散为图片
其中,vc=cv2.VideoCapture()
参数为0时,即vc=cv2.VideoCapture(0),表示打开笔记本的内置摄像头;
参数为视频文件路径,即vc=cv2.VideoCapture(“../testi.mp4”),为打开视频文件。
代码如下:
import os
import cv2
import subprocess
os.chdir(r'D:\pythonclass')#转到目录下
v_path='ghz.mp4'
image_save='./img'#新建一个文件夹用于放生成的图片
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('./img/image{}.jpg'.format(i),img)#把i传进{}中
效果如图:
5.2比较图像相似度
5.2.1 基于相等比较图像相似度
涉及函数:operator(标准运算符替代函数)
其中,会用到operator.eq(a,b)。
eq(a, b) 与 a == b 相同。
Operator其他功能参考:operator --- 标准运算符替代函数 — Python 3.10.0 文档
代码如下:
import operator
from PIL import Image
a=Image.open('./img/image0.jpg')
b=Image.open('./img/image0.jpg')
print(a)
out=operator.eq(a,b)
print(out)
5.2.2 基于numpy计算图片是否相等
涉及函数:NumPy 算术函数;any()函数。
①umpy包含简单的加减乘除: add(),