我是EmguCV的新手。 我想将彩色图像转换为灰度图像。 为了进行转换,我使用了以下代码
Image<Gray,byte> grayImage = ColordImage.Convert<Gray, byte>();
现在当我在 C# 中编译这段代码时,它没有错误,但是当我运行它后,几秒钟后就会在这行代码处抛出异常,表示 OpenCV 不支持这种类型的转换。现在有谁可以帮助我解决这个问题。
问候 Amal
这可能取决于ColordImage的颜色类型。例如,以下代码是可行的:
Capture cap = new Capture(1);
Image <Bgr,Byte> ColordImage = cap.QueryFrame();
Image <Gray,Byte> grayImage = ColordImage.Convert<Gray, Byte>();
imageBox1.Image = grayImage;
如果您能提供更多的代码,可能会更加清楚发生了什么。
另外,如果您不想使用Convert
(例如,如果您的ColoredImage
是其他数据类型,如IntPtr),则有许多可用的构造函数,例如:
Image<Gray, byte> grayFrame = new Image<Gray, byte>(width, height, stride, imageData);
这里是完整列表:
http://www.emgu.com/wiki/files/2.1.0.0/html/cb45d54d-ebce-44b6-0352-3e1105c0862a.htm
此外,emgu Wiki上还有一些更多的示例(包括使用Convert的示例):http://www.emgu.com/wiki/index.php/Working_with_Images
如果您使用的是Emgu CV 2.2.1.1150,您需要将opencv_imgproc220.dll粘贴到您的项目bin/debug文件夹中。
一种简单的方法是在构造函数中传递彩色图像的位图;
Image<Bgr, byte> inputImage = //your original bgr image
Image<Gray, Byte> result = new Image<Gray,byte>(inputImage.Bitmap);