【问题标题】:Get RGB color values on OpenCV and C#在 OpenCV 和 C# 上获取 RGB 颜色值
【发布时间】:2013-09-12 07:54:13
【问题描述】:

我找不到一个简单问题的解决方案:

在这段代码中:

private void ibOriginal_MouseClick(object sender, MouseEventArgs e)
{
    int mouse_get_X = (int)(e.Location.X);
    int mouse_get_Y = (int)(e.Location.Y);

    Byte byte_color = imgOriginal.Data[mouse_get_X, mouse_get_Y, 0];
}

我希望通过鼠标单击获得具有 X、Y 坐标的像素的 RGB 值(在 int 的 3 维数组中)。

我可以转换“byte_color”吗? 对吗?

我在 C# 中找不到任何可以帮助我的东西,我正在使用 EmguCV。

【问题讨论】:

  • 可以把RGB变成一个字节,2个bpp,imgOriginal.Data是什么类型的?

标签: c# visual-studio-2010 opencv emgucv


【解决方案1】:

首先,您可能想要:

imgOriginal.Data[mouse_get_Y, mouse_get_X, 0];  //note X and Y swapped

其次,在 OpenCV 中,数据存储在您使用最后一个索引选择的波段中。它们的解释取决于您的图像类型。例如,如果您有BGR 图像类型,那么:

imgOriginal.Data[mouse_get_Y, mouse_get_X, 0]; // blue
imgOriginal.Data[mouse_get_Y, mouse_get_X, 1]; // green
imgOriginal.Data[mouse_get_Y, mouse_get_X, 2]; // red

与此命名空间中定义的其他图像类型类似:http://www.emgu.com/wiki/files/1.3.0.0/html/b72c032d-59ae-c36f-5e00-12f8d621dfb8.htm

当波段的分辨率为byte 时,它们的值范围为 0...255,所以基本上你已经有了一个整数,你可以轻松地将它放入文本框中:

textBox.Text = byteValue.ToString();

【讨论】:

  • 好的,我解决了添加这行代码:imgOriginal = imgOriginal.Convert();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 2016-08-10
  • 2023-03-19
  • 2023-03-31
相关资源
最近更新 更多