Emgu CV ColorConversion.RGB2GRAY / BGR2GRAY

时间:2017-06-20 02:59:25

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

我正在研究目前关于图像处理的论文,这是我第一次在图像处理领域,我愿意在项目进展的同时学到更多。我对代码非常感兴趣:

CvInvoke.CvtColor(imgRgb, imgGray, Emgu.CV.CvEnum.ColorConversion.Rgb2Gray)

我尝试使用此代码,但它只返回图片框中的黑框。我在CvtColor之后立即使用了这一行:

pictureBox1.Image = imgGray.ToBitmap();

我阅读了关于RGB2GRAY的文档,并将其表示为LUMA灰度转换,我在论文中确实需要这种类型的算法。我想使用Image<Gray, byte> gray_image = resizedImage.Convert<Gray, byte>(),但我不知道正在使用什么类型的灰度算法。

2 个答案:

答案 0 :(得分:0)

尼尔, 虽然我不知道他们各自网站上免费提供的EmguCV和OpenCV区域的来源。我会拉每个的副本然后看。我刚刚进入3.2的OpenCV文档,发现了这个:

**RGB↔GRAY

RGB空间内的转换,例如添加/删除Alpha通道,反转通道顺序,转换为16位RGB颜色(R5:G6:B5或R5:G5:B5),以及转换为/来自灰度使用:

RGB [A]至灰色:Y←0.299⋅R+0.587⋅G+0.114⋅B 和

灰色到RGB [A]:R←Y,G←Y,B←Y,A←max(ChannelRange) 从RGB图像到灰色的转换使用:

完成

cvtColor(src,bwsrc,cv :: COLOR_RGB2GRAY); ** Find documentation here

道格

答案 1 :(得分:0)

您需要将 imgGray 声明为 Gray 而不是 Bgr

Image<Gray, byte> imgGray 并不是 Image<Bgr, byte> imgGray

至少我假设这是你的错误,因为我得到了和你一样的黑色图片!但是有了这个修复,它就奏效了。