在 OpenCV 和 C# 上获取 RGB 颜色值
本文关键字:获取 RGB 颜色值 OpenCV | 更新日期: 2023-09-27 18:30:33
我找不到解决我遇到的简单问题的方法:
在此代码中:
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 的三维数组中)。
我可以转换"byte_color"吗?正确吗?
我在 C# 中找不到任何可以帮助我的东西,我正在使用 EmguCV。
首先,您可能希望拥有:
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();