0
哪個是計算python中2個圖像之間像素差異的最佳方法或準確方法?圖片比較|像素差異
我有一個教育視頻,爲了從中提取關鍵幀,我需要不斷對幀進行像素比較。
我想知道我們是否可以取幀之間的所有像素差異,然後存儲其值大於平均值的幀。
是否有任何功能來實現這一目標?任何新的建議,歡迎
哪個是計算python中2個圖像之間像素差異的最佳方法或準確方法?圖片比較|像素差異
我有一個教育視頻,爲了從中提取關鍵幀,我需要不斷對幀進行像素比較。
我想知道我們是否可以取幀之間的所有像素差異,然後存儲其值大於平均值的幀。
是否有任何功能來實現這一目標?任何新的建議,歡迎
Image comparison - fast algorithm
這顯示瞭如何找出是否幀是重複或非常相似對方。相反,它也會讓你知道它們是否與衆不同,這似乎是你想要找到的。
編輯: 如果知道關鍵幀將與前一幀顯着不同,那麼你也許可以在這裏所描述的方法來識別它們: http://www.pyimagesearch.com/2014/09/15/python-compare-two-images/
from skimage.measure import structural_similarity as ssim
s = ssim(imageA, imageB)
你可以試運行這在ssim值上尋找一個閾值,一旦超過閾值就把它當作一個關鍵幀。 (圖像越相似,s的值越接近1)
另一種方法也在文章中描述,它與您的像素差異均值的想法非常相似,除了它的意思是square diff
import numpy as np
err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
err /= float(imageA.shape[0] * imageA.shape[1])
嗨,如果您能夠將一些實際的代碼示例拉入本文中,並提供一些額外的清晰度,說明使用哪些方法以及如何幫助OP,這將會更有用。謝謝 –
那麼,根據實際的代碼,這裏是一個回購: https://github.com/eivindbergem/find-keyframes 它實際上只是從MPEG TS文件返回關鍵幀。 你可以研究一下,但是通過代碼的一些閱讀,它似乎只是檢查關鍵幀的MPEG特定標籤,不再需要實際比較幀,這不僅使得發現幀更快,而且還更可靠,因爲你可能有截然不同的幀,但它們都不必是關鍵幀。 當然,除非OP的*有*做像素比較 –
而成功:成功 ,設置currentFrame = vidcap.read() isDuplicate =假 上限=計數,如果計數<= 10其他(計數 - 10) 在x範圍的img (極限,計數): previusFrame = cv2.imread( 「%sframe-%d.png」 %(outputDir,張圖片)) 嘗試: 差= cv2.subtract(設置currentFrame,previusFrame) # 除外: 通過 isDuplicate = not np.any(difference)#如果差異全部爲零,則返回False。這是即時使用的代碼,但它創建了很多框架。 – ashti