2016-05-31 6 views
7

첫째, 나는OpenCVSharp를 사용하여 매트를 비트 맵으로 변환하려면 어떻게해야합니까?

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); 
    } 

이것은 작동하지 않습니다. 대신 Mat 유형을 사용

enter image description here

답변

8

, 난 당신이 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 형식을 변환 할 수 있습니다 결과는 위에 표시된 것과 같습니다.

+0

매트를 비트 맵으로 변환하는 것이 불가능합니까? – anonymous

+0

매트를 작성하기위한 코드를 제공하여 더 잘 평가할 수 있습니까? – Derman

+0

내 대답이 업데이트되었습니다. – Derman

1

매트 반환하는 방법을 비트 맵 :

 mat.ToBitmap(bitmap); 

"OpenCvSharp.Extensions을 사용하여;" 이 또한 필요합니다.

+0

예, 가능하지만 매트가 처리 된 후에는 비트 맵을 사용할 수 없습니다. – rism

관련 문제