最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python進行視頻相似度比較實例

 更新時間:2023年07月28日 11:09:43   作者:培根芝士  
這篇文章主要介紹了使用Python進行視頻相似度比較實例,本文通過漢明距離算法與圖片比較等方法對比兩個視頻流的相似度,文中提供了部分實現(xiàn)代碼與解決思路,需要的朋友可以參考下

Python視頻相似度比較

1、安裝依賴庫

pip3 install numpy
pip3 install opencv-python

2、獲取圖片哈希值

def pHash(img):
	# 縮放圖片為32x32灰度圖片
	img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
	img = cv2.resize(img, (32, 32), interpolation=cv2.INTER_CUBIC)
	# 創(chuàng)建二維列表
	h, w = img.shape[:2]
	vis0 = np.zeros((h,w), np.float32)
	vis0[:h,:w] = img
	# 二維Dct變換
	vis1 = cv2.dct(cv2.dct(vis0))
	vis1 = vis1[:8, :8]
	# 把二維list變成一維list
	img_list = vis1.flatten().tolist()
	# 計算均值, 得到哈希值
	avg = sum(img_list) * 1. / 64
	avg_list = [0 if i < avg else 1 for i in img_list]
	return avg_list

3、求漢明距離

def hanming_dist(s1, s2):
	return sum([ch1 != ch2 for ch1, ch2 in zip(s1, s2)])

4、輸入比較的兩個視頻流,返回是否相似。

幀相似度>=0.85返回True,否則返回False

def compare(video1: cv2.VideoCapture = None, video2: cv2.VideoCapture =None) -> bool:
	# 獲取較短視頻的幀數(shù)
	min_frame_count = min(video1.get(cv2.CAP_PROP_FRAME_COUNT), 
							video2.get(cv2.CAP_PROP_FRAME_COUNT))
	# 獲取視頻FPS
	fps1 = video1.get(cv2.CAP_PROP_FPS)
	similar = 0
	frame_cnt = int(min_frame_count / fps1)
	# 截幀
	for _ in range(frame_cnt):
		for _ in range(int(fps1)): # 按視頻一間隔1s
			retval1 = video1.grab()
			retval2 = video2.grab()
		if not retval1 or not retval2:
			grab_failure_cnt += 1
			if grab_failure_cnt >= 10:
				raise Exception('Grab failed too much >= {} times, could be endless loop.'.format(10))
		else:
			grab_failure_cnt = 0
		flag1, frame1 = video1.retrieve()
		flag2, frame2 = video2.retrieve()
		# 提phash特征
		if flag1 & flag2:
			phash1 = pHash(frame1)
			phash2 = pHash(frame2)
			# 比較漢明距離
			if hanming_dist(phash1, phash2) < 12:
				similar += 1
	print("similar:", similar/frame_cnt, frame_cnt)
	return similar / frame_cnt

5、調(diào)用示例

def compareVideo(srcVideo, dstVideo):
	video1 = cv2.VideoCapture(srcVideo)
	video2 = cv2.VideoCapture(dstVideo)
	return compare(video1, video2)

到此這篇關(guān)于使用Python進行視頻相似度比較實例的文章就介紹到這了,更多相關(guān)Python視頻相似度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python上下文管理器的用法(Context Manager)

    Python上下文管理器的用法(Context Manager)

    上下文管理器是Python中管理資源分配與釋放的重要機制,通過with語句實現(xiàn)資源的自動管理,它適用于文件操作、數(shù)據(jù)庫連接、線程鎖管理等場景,可保證資源正確釋放,本文總結(jié)了上下文管理器的實現(xiàn)方式、應(yīng)用場景、最佳實踐和高級用法,旨在幫助開發(fā)者更好地掌握這一強大工具
    2026-04-04
  • Python+OpenCV實現(xiàn)定位二維碼

    Python+OpenCV實現(xiàn)定位二維碼

    這篇文章主要為大家詳細介紹了如何利用Python和OpenCV實現(xiàn)定位二維碼功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • Pycharm如何對python文件進行打包

    Pycharm如何對python文件進行打包

    這篇文章主要介紹了Pycharm如何對python文件進行打包,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python正則表達式?r'(.*)?are?(.*?)?.*'的深入理解

    Python正則表達式?r'(.*)?are?(.*?)?.*'的深入理解

    日常的開發(fā)工作中經(jīng)常會有處理字符串的需求,簡單的字符串處理,我們使用python內(nèi)置的字符串處理函數(shù)就可以了,但是復(fù)雜的字符串匹配就需要借助正則表達式了,這篇文章主要給大家介紹了關(guān)于Python正則表達式?r‘(.*)?are?(.*?)?.*‘的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • python 基礎(chǔ)教程之Map使用方法

    python 基礎(chǔ)教程之Map使用方法

    這篇文章主要介紹了python 基礎(chǔ)教程之Map使用方法的相關(guān)資料,這里附有簡單使用實例,需要的朋友可以參考下
    2017-01-01
  • Python項目報錯ModuleNotFoundError的終極解決方案

    Python項目報錯ModuleNotFoundError的終極解決方案

    在?Python?項目開發(fā)中,很多同學都會遇到ModuleNotFoundError的問題報錯,下面小編就和大家詳細介紹一下具體的實現(xiàn)方法,希望對大家有所幫助
    2026-01-01
  • 使用python執(zhí)行shell腳本 并動態(tài)傳參 及subprocess的使用詳解

    使用python執(zhí)行shell腳本 并動態(tài)傳參 及subprocess的使用詳解

    這篇文章主要介紹了使用python執(zhí)行shell腳本 并動態(tài)傳參 及subprocess的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python獲取圖片中兩個點的具體坐標并將圖無損裁剪下來

    python獲取圖片中兩個點的具體坐標并將圖無損裁剪下來

    這篇文章主要為大家詳細介紹了python如何獲取圖片中兩個點的具體坐標并將圖無損裁剪下來,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2025-11-11
  • python基礎(chǔ)之循環(huán)語句

    python基礎(chǔ)之循環(huán)語句

    這篇文章主要介紹了python的循環(huán)語句,實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • windows 下python+numpy安裝實用教程

    windows 下python+numpy安裝實用教程

    這篇文章主要介紹了windows 下python+numpy安裝實用教程,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論

布尔津县| 洪雅县| 杂多县| 江安县| 商水县| 泰兴市| 晋城| 万源市| 北票市| 甘肃省| 福贡县| 句容市| 青龙| 黄浦区| 重庆市| 开封市| 河北区| 斗六市| 钟祥市| 宝清县| 定襄县| 蛟河市| 灵寿县| 高淳县| 松阳县| 昌图县| 边坝县| 溆浦县| 丘北县| 云安县| 彭州市| 西乌珠穆沁旗| 长丰县| 福建省| 庆元县| 葵青区| 大理市| 万安县| 措美县| 安溪县| 石棉县|