ORB特征点提取与直方图相似度结合算法过滤视频关键帧
2022/2/24 20:51:46
本文主要是介绍ORB特征点提取与直方图相似度结合算法过滤视频关键帧,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import cv2 import os from PIL import Image similary = 0.4 # 相似度值,可根据初步结果进行调整 # 读取并比较文件夹下的图片,同时删除相似图片 def read_dir(dir_name): if os.path.exists(dir_name): dir = os.listdir(dir_name) for file_name1 in range(len(dir)): for file_name2 in range(file_name1 + 1, len(dir)): img1 = dir_name + "\\" + dir[file_name1] img2 = dir_name + "\\" + dir[file_name2] if os.path.exists(img1) and os.path.exists(img2):# 循环中有部分内容会被删除,在此处进行判断 # print("{}与{}进行比较".format(img1, img2)) result1 = float(ComImg(img1, img2)) result2 = float(RGBImg(img1, img2)) if result1 >= similary or result2 >= similary: os.remove(img2) def ComImg(img1_path,img2_path): try: # 读取图片 img1 = cv2.imread(img1_path, cv2.IMREAD_GRAYSCALE) img2 = cv2.imread(img2_path, cv2.IMREAD_GRAYSCALE) # 初始化ORB检测器 orb = cv2.ORB_create() kp1, des1 = orb.detectAndCompute(img1, None) kp2, des2 = orb.detectAndCompute(img2, None) # 提取并计算特征点 bf = cv2.BFMatcher(cv2.NORM_HAMMING) # knn筛选结果 matches = bf.knnMatch(des1, trainDescriptors=des2, k=2) # 查看最大匹配点数目 good = [m for (m, n) in matches if m.distance < 0.75 * n.distance] similary = len(good) / len(matches) return similary except: return '0' # 直方图相似度 def RGBImg(img1_path, img2_path): img1 = Image.open(img1_path).convert('RGB') img2 = Image.open(img2_path).convert('RGB') def hist_similar(lh, rh): assert len(lh) == len(rh) return sum(1 - (0 if l == r else float(abs(l - r))/max(l, r)) for l, r in zip(lh, rh))/len(lh) result = hist_similar(img1.histogram(), img2.histogram()) return result dir_name = 'C:\\Users\\Desktop\\frame' read_dir(dir_name)
文件夹路径下的内容为:素材视频中每隔10帧抽取的图片,为避免后期大量处理,通过ORB特征提取计算相似度算法与直方图相似度算法过滤并删除大部分重复内容。
经初步测试,直方图相似度可以过滤同一镜头下不同对焦产生的重复图像,但具体效果因素材而异。
结果示例:
过滤前
过滤后
这篇关于ORB特征点提取与直方图相似度结合算法过滤视频关键帧的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南