gpt4 book ai didi

image-processing - 如何掩盖绿色像素?

转载 作者:行者123 更新时间:2023-12-02 16:57:19 24 4
gpt4 key购买 nike

我需要屏蔽图像中的绿色像素。
我有掩蔽红色像素的例子。
这里的例子:

Image<Hsv, Byte> hsv = image.Convert<Hsv, Byte>()

Image<Gray, Byte>[] channels = hsv.Split();

//channels[0] is the mask for hue less than 20 or larger than 160

CvInvoke.cvInRangeS(channels[0], new MCvScalar(20), new MCvScalar(160), channels[0]);
channels[0]._Not();

但是,我无法理解这些参数在哪里标记:
new MCvScalar(20), new MCvScalar(160)

知道我必须采用哪些参数来掩盖绿色像素吗?
先感谢您。

最佳答案

该代码使用 20 - 160 范围之外的色调屏蔽像素(或者更确切地说屏蔽范围内的像素,然后反转屏蔽)。

一、了解HSV(Hue, Saturation, Value):http://en.wikipedia.org/wiki/HSL_and_HSV

实际的色调以度为单位,从 0 到 360,如:

Hue angles

然后看OpenCV documentation on 8-bit HSV format :

色调首先在 0 - 360 范围内计算,然后除以 2 以适应 8 位整数。

这意味着在原始示例中,蒙版像素的实际色调低于 40 度或高于 320 度。显然这是 0 度正/负 40。

对于类似范围的果岭,您需要 120 +/- 40,即从 80 到 160。最后将其转换为 8 位表示 - 从 40 到 80。

但是,实际代码将与您的示例不同:对于红色,他们必须屏蔽 20,160,然后反转掩码。对于绿色,只需从 40 到 80 进行屏蔽就足够了(即您必须省略 channels[0]._Not(); 部分)。

关于image-processing - 如何掩盖绿色像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12346886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com