11

まず、これを試したところ、

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

ここに画像の説明を入力

それで、私はこれを試しました、

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

画像は真っ黒ですが、

ここに画像の説明を入力

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

これもうまくいきません。

ここに画像の説明を入力

4

3 に答える 3

13

typeを使用する代わりに、Mattype を使用することをお勧めします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

これはあなたの入力レナ画像です:

ここに画像の説明を入力

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

ここに画像の説明を入力

それが役に立てば幸い!

アップデート:

OpenCVSharp3 を使用すると、次のコードでもMat型をBitmap型に変換できます。

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

そして、得られた結果は上記と同じです。

于 2016-06-10T09:01:54.837 に答える