我正在研究目前关于图像处理的论文,这是我第一次在图像处理领域,我愿意在项目进展的同时学到更多。我对代码非常感兴趣:
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>()
,但我不知道正在使用什么类型的灰度算法。
答案 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
至少我假设这是你的错误,因为我得到了和你一样的黑色图片!但是有了这个修复,它就奏效了。