【发布时间】:2022-06-12 18:42:57
【问题描述】:
我需要计算视频中的黑色像素。我找到了读取 RGB 通道并计算帧的平均 RGB 值的 python 代码。相反,我需要它来计算黑色和彩色像素并计算彩色像素的平均值。 这是我一直在研究的程序
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
cv2.imshow('frame', frame)
b = frame[:, :, :1]
g = frame[:, :, 1:2]
r = frame[:, :, 2:]
# computing the mean
b_mean = round(np.mean(b))
g_mean = round(np.mean(g))
r_mean = round(np.mean(r))
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()```
【问题讨论】:
-
黑色是主观的。您可以对每个通道应用一个阈值,并将所有 R、G 和 B 通道中具有非常低值的像素视为黑色。您不需要对每个通道设置阈值,然后对它们应用 OR 运算符,如果结果仍然为 0,则表示所有通道都为低电平。看看如何应用阈值。那么剩下的像素不是黑色的就可以应用平均docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html
-
您是否有一条规则可以告诉您像素是否为“黑色”?你知道一种选择满足条件的 Numpy 数组元素的方法吗?您知道一种计算该选择中元素的方法吗?如果你把这些东西放在一起,你能解决问题吗?
-
注意:视频不使用 RGB,因此如果您检查原始 YCC 数据,可能会更容易、更快,并且伪影更少(由于解压缩)。第二:“视频”是通用的。有些视频使用 16 作为黑色,有些使用 0。
标签: python rgb video-processing