目录
分镜
前面的内容中已经分别实现哈希均值和直方图分镜,以及pycharm的基本使用和逐帧提取,本次将两者的内容结合起来,在pycharm中同时实现逐帧提取及分镜。
shot.py
在这一步中使用均值哈希进行分镜,对比是否重复,并将非重复的图片进行存储
import cv2
import matplotlib.pyplot as plt
import os
# 均值哈希算法
def aHash(img):
# 缩放为8*8
img = cv2.resize(img, (8, 8))
plt.imshow(img)
# 转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# s为像素和,初值为0;hash_str为hash值,初值为"
s = 0
hash_str = ""
# 遍历累加求像素和
for i in range(8):
for j in range(8):
s = s + gray[i, j]
# 求平均灰度
avg = s / 64
# 灰度大于平均值为1相反为0生成图片的hash值
for i in range(8):
for j in range(8):
if gray[i, j] > avg:
hash_str = hash_str + '1'
else:
hash_str = hash_str + '0'
return hash_str
# Hash值对比
sim=0
def cmpHash(hash1, hash2):
global sim
n = 0
# hash长度不同则返回-1代表传参出错
if len(hash1) != len(hash2):
return -1
# 遍历判断
for i in range(len(hash1)):
# 不相等则n计数+1,n最终为相似度
if hash1[i] != hash2[i]:
n = n + 1
sim=1-n/64
return sim
def genFrame():
image_save = '/Users/mac/Desktop/courses/ad/python/20211105/shot'
if not (os.path.exists(image_save)):
os.mkdir(