如何使用EMGU CV库获取C#中红色区域的平均强度值?

时间:2015-05-19 17:00:48

标签: c# emgucv

我在这里用过:

pictureBox1.Image = My_Image.ToBitmap();
byte Red_val = My_Image.Data[0, 0, 2];
MessageBox.Show(Red_val.ToString());

这是否给出了红色区域的平均强度?如何获得平均强度值?

3 个答案:

答案 0 :(得分:1)

Image.GetAverage()方法可以完成这项工作。还有一个Image.GetAverage(mask)的重载,如果你需要一个非矩形区域,它将采用掩码:http://www.emgu.com/wiki/files/1.4.0.0/html/3b71b52b-48a1-a3de-d3f6-75010ef3ff26.htm

答案 1 :(得分:0)

你的第二行:

byte Red_val = My_Image.Data[0, 0, 2];

将在第0行和第0列为您提供像素的红色值。 如果你想要整个图片的平均红色,你应该遍历它的行和列并总结通道数据。

 Double Red_avg = 0.0;  
 for (int j = 0; j < My_Image.Cols; j++)
 {
    for (int i = 0; i < My_Image.Rows; i++)
    {
    Red_avg+=My_Image.Data[i, j,2];
    }
 }
Red_avg=Red_avg/(My_Image.Cols*My_Image.Rows);

答案 2 :(得分:0)

查看EMGU中的Image.AvgSdv方法:

$(":checkbox").change(function(){ $(this).closest('tr').find('input').not(this).prop('checked', false); });

&#34;计算每个频道&#34; 的数组元素的平均值和标准差。它可能比自己循环图像更快。