Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

display cv::Mat (opencv 2.4.3) in pictureBox (Visual C++ 2010)

I need to read an image in Mat form using openFileDialog and display it in a pictureBox (in Visual C++/Visual Studio 2010).

I searched a lot but couldn't find the answer.

I am using this code:

openFileDialog1->Filter = "JPEG files (*.jpg)|*.jpg|Bitmap files (*.bmp)|*.bmp";
if(openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
    Mat img;
    img = imread(openFileDialog1->FileName, CV_LOAD_IMAGE_COLOR);
    pictureBox1->Image = (gcnew Bitmap(img.size().width,
                                            img.size().height,
                                            img.widthStep,
                                            Imaging::PixelFormat::Format24bppRgb,
                                            (IntPtr)img.data));

}
like image 756
Todd Anderson Avatar asked Oct 22 '22 10:10

Todd Anderson


1 Answers

This question has already been answered here:

For your requirement, you can do it like this:

Mat img;
img = imread(openFileDialog1->FileName, CV_LOAD_IMAGE_COLOR);

System::Drawing::Graphics^ graphics = pictureBox1->CreateGraphics();
System::IntPtr ptr(img.ptr());
System::Drawing::Bitmap^ b  = gcnew System::Drawing::Bitmap(img.cols,img.rows,img.step,System::Drawing::Imaging::PixelFormat::Format24bppRgb,ptr);
System::Drawing::RectangleF rect(0,0,pictureBox1->Width,pictureBox1->Height);
graphics->DrawImage(b,rect);
like image 152
sgarizvi Avatar answered Oct 25 '22 20:10

sgarizvi