我正在尝试计算整个图像中一种颜色的平均值,以便确定颜色,饱和度或强度或eny其他值如何在视频的frmaes之间发生变化。 但是我想得到一个值来描述整个帧(和sigle,其中选择的颜色)。计算帧中颜色的简单平均值给出了视频帧之间的非常小的差异,在0..255空间上只有2-3。
除了直方图之外,还有其他方法可以确定图像的颜色吗?据我所知,它会给我一个以上描述单帧的值。
答案 0 :(得分:1)
您使用哪个库进行图像处理?如果它是OpenCV(或Matlab),那么这里的步骤将非常简单。否则你需要四处寻找并尝试一下。
将中值作为单一颜色来描述您的帧 - 帧中最大量的颜色。
这里的关键点是上述步骤对于实时视频来说是否足够快。你必须试着找出我的猜测。
答案 1 :(得分:0)
最糟糕的情况是,您可以遍历图像中的所有像素并进行计数。不确定你使用的是编程方式,但是我使用Python和Numpy类似的东西。其中pb是一个带有我图像的gtk pixbuf。
def pull_color_out(self, pb, *args):
counter = 0
dat = pb.get_pixels_array().copy()
for y in range(0,pb.get_width()):
for x in range(0,pb.get_height()):
p = dat[x][y]
#counts pure red pixels
if p[1] = 255 and p[2] = 0 and p[3] = 0:
counter += 1
return counter
除此之外,我通常会使用直方图并从中获取所需的数据。主要是,这不是你最快的选择,特别是对于一个视频,但是如果你有时间或只是几帧,那么就会破解:P