1.把视频打散为图片
首先在操作路径下载视频,然后将视频分帧数导出为图片
#把视频打散为图片
import os
import cv2
import subprocess
os.chdir('/Users/air/Desktop/mediabigdata')
v_path='/Users/air/Desktop/ghz.mp4'
image_save='/Users/air/Desktop/pic'
cap=cv2.VideoCapture(v_path)
frame_count=cap.get(cv2.CAP_PROP_FRAME_COUNT)
for i in range(int(frame_count)):
_,img=cap.read()
#img=cv2.cvtColor(img,cv2.cv2.Color_BGR2GRAY) #cv2.Color_RGB2HSV cv2/Color_BGR2HSV
cv2.imwrite('/Users/air/Desktop/pic/image{}.jpg'.format(i),img)
虽然我这里代码报错显示OpenCV:img文件empty,但是可以顺利导出,此时对应的下载图片到的文档的名字是【pic】而不是img(同时为了防止报错虽然好像没用到但在桌面建立了mediabigdata文件夹。
最终输出成果如图:
19秒的视频打散为了549张image。
2.基于相等判断图像是否相同
#基于相等判断图像是否相同
import operator
from PIL import Image
import os
os.chdir('/Users/air/Desktop/mediabigdata')
a=Image.open('/Users/air/Desktop/沈腾2.jpeg')
b=Image.open('/Users/air/Desktop/沈腾2.jpeg')
out=operator.eq(a,b)
print(out)
这里就是纯相等判断 不可以判断相似 输出结果实例如下:
3.基于numpy计算图像是否相似
这个个人理解和上面没区别 只是引用库不一样
#基于numpy计算图像是否相似
import numpy as np
from PIL import Image
import os
os.chdir('/Users/air/Desktop/mediabigdata')
a=Image.open('/Users/air/Desktop/pic/image46.jpg')
b=Image.open('/Users/air/Desktop/pic/image47.jpg')
diff=np.subtract(a,b)
out=not np.any(diff)
print(out)
4.基于哈希判断
继续说openCV相识度问题.
一般通过三种哈希算法与灰度直方图算法进行判断
#基于哈希判断
import hashlib
a=open('/Users/air/Desktop/pic/image46.jpg','rb')
b=open('/Users/air/Desktop/pic/image47.