C# Emgu获取图像黑色的平均颜色
我是Emgu cv的新手。我的目标是比较两张照片,它们是相同的照片,但亮度略有不同,并获得感兴趣区域的深色或暗点百分比 我见过GetAverage方法,但如何通过指定颜色获得图像的颜色百分比呢。例如黑色是80%,白色是20% GetAverage方法中的掩码参数是什么 我读了文档,但不明白 我的想法是将两张照片都改为灰度,设置ROI,然后得到平均值。我不知道这是实现目标的正确方法 那我该怎么做呢 更新 下面是灰度的ROI图像C# Emgu获取图像黑色的平均颜色,c#,opencv,emgucv,C#,Opencv,Emgucv,我是Emgu cv的新手。我的目标是比较两张照片,它们是相同的照片,但亮度略有不同,并获得感兴趣区域的深色或暗点百分比 我见过GetAverage方法,但如何通过指定颜色获得图像的颜色百分比呢。例如黑色是80%,白色是20% GetAverage方法中的掩码参数是什么 我读了文档,但不明白 我的想法是将两张照片都改为灰度,设置ROI,然后得到平均值。我不知道这是实现目标的正确方法 那我该怎么做呢 更新 下面是灰度的ROI图像 左照片平均强度:37.4879 右图平均强度:40.9773 我
- 左照片平均强度:37.4879
- 右图平均强度:40.9773
- 左照片平均强度:37.4879
- 右照片平均强度: 40.7638
GetAverage(mask)
中的mask
参数允许您仅根据颜色来查找遮罩区域的平均颜色
关于遮罩的概念(与ROI的概念相关),它允许您仅分析或详细说明(取决于上下文)遮罩非零的图像位置。我请你们对此进行深入讨论。如果您发现文档不够清晰,请尝试了解Photoshop中的遮罩是如何工作的,概念是相同的,您肯定会找到更多的解释和更直观的方法
为什么划痕照片的强度比没有划痕照片的低。通过
对,应该更大,对吧??因为它有更多的灰色
正确的?为什么?
不,不应该是格拉瑟。如文档所示,GetAverage()
返回原始图像结构的平均颜色(TColor
),Gray
(灰度)。正如您可以看到的,深色帐篷的灰度值为
0
,相反,白色对应于255
。
因此,添加划痕意味着您的图像变暗。如果您尝试将
GetAverage()
应用于具有不同颜色类型的图像(Bgr
,Bgra
,Hsv
,Hls
,…),它将返回该类型的平均颜色。
最后一件事 我看到了GetAverage方法,但我怎样才能得到图像的颜色百分比 指定颜色。例如黑色是80%,白色是20% 你不能接受这种方法。如上所述,
GetAverage()
向您返回一种灰色
颜色。我唯一能建议的是,您手动将获得的结果转换为颜色百分比,如下所示:
private double ConvertToPercentage(double valueToConvert, int rangeStartAt, int rangeEndAt) {
return valueToConvert/(rangeEndAt - rangeStartAt) * 100;
}
显然,这段代码只适用于单值颜色(例如,不是rgb,它有3个值)。如果需要,您可以很容易地重新实现类似的东西