c# - 在OpenCV和C#上获取RGB颜色值

标签 c# visual-studio-2010 opencv emgucv

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

在此代码中:

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。

最佳答案

首先,您可能想要拥有:

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

当band具有byte分辨率时,它们的值范围为0 ... 255,因此基本上您已经有一个整数,可以轻松地将其放入文本框:
textBox.Text = byteValue.ToString();

关于c# - 在OpenCV和C#上获取RGB颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687852/

相关文章:

visual-studio-2010 - 无法将MOQ添加到.NET 4.0项目

c++ - 获取二进制图像中的值

Python找不到openCV

c# - 如何使用.net youtube API直接上传获取上传状态

C#数据库检索信息

c# - 安全问题 IIS7.5/IIS APPPOOL\user 未授权但具有完全控制权?

c# - 如何将第二个触发器函数添加到部署的 azure 函数而不删除现有函数?

c# - 从C#中的异常“ArguementException未由用户代码处理”中获取更多详细信息

c# - Visual Studio 2010 长时间调试

c++ - 在轮廓中寻找点