2016-05-31 30 views
7

まず、IはOpenCVSharpを使用してMatをビットマップに変換するにはどうすればよいですか?

public static Bitmap MatToBitmap(Mat mat) 
    { 
     return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat); 
    } 

enter image description here

だから、その後、私はこれを試み、

public static Bitmap MatToBitmap(Mat mat) 
    { 
     mat.ConvertTo(mat, MatType.CV_8U); 
     return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat); 
    } 

で完全に黒画像、これを試み

enter image description here

public static Bitmap ConvertMatToBitmap(Mat matToConvert) 
    {    
     return new Bitmap(matToConvert.Cols, matToConvert.Rows, 4*matToConvert.Rows, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, matToConvert.Data); 
    } 

これも機能しません。

enter image description here

答えて

8

代わりのMatタイプを使用して、私はあなたがIplImageタイプを使用することをお勧めします。 (私はOpenCvSharp2でVisualStudio2013を使用)を基準として、次のコード例を取る:これはあなたの入力レナの画像である

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using OpenCvSharp; 
using System.Drawing; 

namespace TestOpenCVSharp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Read the Lenna image 
      IplImage inputImage = new IplImage(@"Lenna.png"); 

      // Display the input image for visual inspection 
      new CvWindow("original image", inputImage); 
      Cv.WaitKey(); 

      // Convert into bitmap 
      Bitmap bitimg = MatToBitmap(img);     
      // Save the bitmap 
      bitimg.Save(@"bitmap.png"); 
     } // end of main function 

     // This is the function that converts IplImage image 
     // into Bitmap 
     public static Bitmap MatToBitmap(IplImage image) 
     { 
      return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image); 
     } // end of MatToBitmap function 
    } // end of class definition 
} // end of namespace definition 

enter image description here

そして、これはBitmapタイプから作成されbitmap.pngです。

enter image description here

それが役に立てば幸い!

更新:機能付き

Mat image = new Mat(@"Lenna.png"); 
Cv2.ImShow("image", image); 
Cv2.WaitKey(); 

Bitmap bitimg = MatToBitmap(image); 
// Save the bitmap 
bitimg.Save(@"bitmap.png"); 

public static Bitmap MatToBitmap(Mat image) 
{ 
    return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image); 
} // end of MatToBitmap function 

得られOpenCVSharp3、次のコードを使用して

Bitmap型にMatタイプを変換することができ結果は上記と同じです。 "OpenCvSharp.Extensionsを使用して、"

 mat.ToBitmap(bitmap); 

+0

マットをビットマップに変換できませんか? – anonymous

+0

マットを作成するためのコードを提供して、より良い評価をすることができますか? – Derman

+0

私は自分の答えを更新しました。 – Derman

1

マットは、ビットマップを返すメソッドを持っていますこのためにも必要です。

+0

はい、これは可能ですが、マットを配置した後はビットマップを使用できません。 – rism

関連する問題