我可以用直方图(频率分布)来做吗?

Can I do it with histogram (frequency distribution)?

我已经从视频中提取帧并转换成光流,如下所示;

您可以清楚地看到,有些帧提供移动对象的信息(frame000037、frame000039 等),有些是静态的(frame000038、frame000040、frame000042 等)。

我已经阅读了静态帧和移动帧以使用 OpenCV 查看差异,谁能告诉我谁可以过滤掉所有包含运动信息的帧?

我采用了均值、标准差、归一化,但它们对我没有用,因为静态的像素值可能大于可移动的像素值,并且在某些情况下它可能小于可移动的像素值,因此它没有'并非适用于所有情况。

您可以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)