私は EmguCV が初めてです。RGB画像をグレースケールに変換したい。変換のために、私はコードを使用しました
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);
完全なリストは次のとおりです
。
emgu Wiki には、さらにいくつかの例 (Convert の使用法を含む) もあります: http://www.emgu.com/wiki/index.php/Working_with_Images
opencv_imgproc220.dll (emgu cv 2.2.1.1150 を使用している場合) をプロジェクトの bin/debug フォルダーに貼り付ける必要があります。
簡単な方法の 1 つは、コンストラクターでカラー イメージの BitMap を渡すことです。
Image<Bgr, byte> inputImage = //your original bgr image
Image<Gray, Byte> result = new Image<Gray,byte>(inputImage.Bitmap);