我已經從視頻中提取了幀并轉換成這樣的光流;

您可以清楚地看到,有些幀提供了移動物件的資訊(frame000037、frame000039 等),有些幀是靜態的(frame000038、frame000040、frame000042 等)。
我已經閱讀了靜態一幀和移動一幀以查看使用 OpenCV 的差異,誰能告訴我誰能過濾掉那些包含運動資訊的所有幀?
我采用了均值、標準差、歸一化,但它們對我不起作用,因為靜態像素值可能大于可移動像素值,并且在某些情況下可能小于可移動像素值,因此它不適用于所有情況.
uj5u.com熱心網友回復:
您可以np.sum將每幀的白色像素用作權重。您的空框架結果將是常數,等于框架的面積。所以你可以檢查框架是否為空。
import cv2
import numpy as np
img1=cv2.imread("/tmp/frame0.bmp",0)
img2=cv2.imread("/tmp/frame1.bmp",0)
th = 150
ret, m1 = cv2.threshold(img1,th,255,cv2.THRESH_BINARY_INV)
ret, m2 = cv2.threshold(img2,th,255,cv2.THRESH_BINARY_INV)
n_pix1 = np.sum(m1 == 255)
n_pix2 = np.sum(m2 == 255)
print(n_pix1,n_pix2)
cv2.imshow("1",m1)
cv2.imshow("2",m2)
cv2.waitKey(0)

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/351843.html
