2010-06-01 17 views
9

EmguCV için yeni. Bir rgb resmini gri skalaya dönüştürmek istiyorum. ben hiçbir hata veriyor C# bu kodu derleme yaparken dönüşüm için ben kod ŞimdiC emguCV kullanarak gri tonlama dönüştürme C#

Image<Gray,byte> grayImage = ColordImage.Convert<Gray, byte>(); 

kullandık, ama birkaç saniye sonra çalıştırın zaman bu o bu kod satırında bana özel durum verir OpenCV tarafından dönüştürme türü desteklenmiyor. Şimdi bu problemi çözmemde bana yardımcı olabilir.

Selamlar Amal

+0

Tom Wright'ın yanıtı benim için çalıştı. Eğer senin için çalıştıysa, lütfen cevabı kabul et. – Chad

cevap

12

O ColordImage olan renk tipine bağlı olabilir.

Örneğin, bu çalışır: Eğer kod fazla kaynağı olsaydı

Capture cap = new Capture(1); 
Image <Bgr,Byte> ColordImage = cap.QueryFrame(); 
Image <Gray,Byte> grayImage = ColordImage.Convert<Gray, Byte>(); 
imageBox1.Image = grayImage; 

, bu ne olup bittiğini daha belirgin hale gelebilir.

4

Eğer Convert kullanmak istemiyorsanız, bunun yerine, mevcut gibi sayısız kurucunun var (ihtimaline karşı ColoredImage IntPtr gibi bazı diğer veri türüdür örn): Burada

Image<Gray, byte> grayFrame = new Image<Gray, byte>(width, height, stride, imageData); 

bir dolu listesi:
http://www.emgu.com/wiki/files/2.1.0.0/html/cb45d54d-ebce-44b6-0352-3e1105c0862a.htm

emgu Wiki'deki (Dönüştür kullanımı dahil) biraz daha örnekler de vardır: http://www.emgu.com/wiki/index.php/Working_with_Images

5

Proje bin/debug klasörüne opencv_imgproc220.dll (emgu cv 2.2.1.1150 kullanıyorsanız) yapıştırmalısınız.

+2

Bu cevap aptal gibi görünüyor ama doğru cevabı. ILSpy'de ColordImage.Convert() öğesini işaretledim, işlev dll yükleme hataları dahil olmak üzere her şeyi yakalayan try/catch bloğunu içeren Image.ConvertColor() yöntemini kullanır. – Markos

3

Basit bir yol, renkli görüntüdeki BitMap'i yapıcıya iletmektir;

Image<Bgr, byte> inputImage = //your original bgr image 
Image<Gray, Byte> result = new Image<Gray,byte>(inputImage.Bitmap);