我是EmguCV的新手。我想將RGB圖像轉換爲灰度。對於轉換我用的代碼在C中使用emguCV轉換爲灰度模式#
Image<Gray,byte> grayImage = ColordImage.Convert<Gray, byte>();
現在,當我編譯C#這個代碼它給沒有錯誤,但是當我幾秒鐘後,運行它,然後它給我的例外,在這行代碼,這OpenCV不支持類型的轉換。現在任何人都可以幫我解決這個問題。
問候 阿邁勒
我是EmguCV的新手。我想將RGB圖像轉換爲灰度。對於轉換我用的代碼在C中使用emguCV轉換爲灰度模式#
Image<Gray,byte> grayImage = ColordImage.Convert<Gray, byte>();
現在,當我編譯C#這個代碼它給沒有錯誤,但是當我幾秒鐘後,運行它,然後它給我的例外,在這行代碼,這OpenCV不支持類型的轉換。現在任何人都可以幫我解決這個問題。
問候 阿邁勒
這可能取決於顏色的類型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維基一些例子(包括轉換的使用):http://www.emgu.com/wiki/index.php/Working_with_Images
您應該將opencv_imgproc220.dll(如果您使用emgu cv 2.2.1.1150)粘貼到您的項目bin/debug文件夾中。
這個答案看起來很愚蠢,但它的正確答案。我在ILSpy中檢查了ColordImage.Convert(),該函數使用Image.ConvertColor(),它包含捕獲所有內容的try/catch塊,包括dll加載錯誤。 – Markos 2012-11-09 20:19:14
一個簡單的方法是在構造函數中傳遞彩色圖像的BitMap;
Image<Bgr, byte> inputImage = //your original bgr image
Image<Gray, Byte> result = new Image<Gray,byte>(inputImage.Bitmap);
湯姆賴特的回答爲我工作。如果它適合你,請接受答案。 – Chad 2016-09-30 15:53:55