小编alo*_*uhu的帖子

如何在Windows窗体应用程序中显示cv :: Mat?

我试图imwrite成功地在Windows窗体上显示图像,但它损坏了磁盘,所以我需要一个更好的方法来做到这一点.

下面是我当前的代码,它将图像临时写入硬盘:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

        namedWindow("video",0);
        VideoCapture cap(0);
        flag = true;
        while(flag){
            Mat frame;
            cap >> frame; // get a new frame from camera
            **imwrite("vdo.jpg",frame);**
            this->panel1->BackgroundImage = System::Drawing::Image::FromFile("vdo.jpg");

            waitKey(5);
            delete panel1->BackgroundImage;
            this->panel1->BackgroundImage = nullptr;

        }
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用Mat内存中的OpenCV时,我无法让它工作.以下代码片段是我到目前为止所尝试的:

this->panel1->BackgroundImage = System::Drawing::Bitmap(frame);
Run Code Online (Sandbox Code Playgroud)

要么

this->panel1->BackgroundImage = gcnew System::Drawing::Bitmap( frame.widht,frame.height,System::Drawing::Imaging::PixelFormat::Undefined, ( System::IntPtr ) frame.imageData);
Run Code Online (Sandbox Code Playgroud)

我希望frame在不使用的情况下显示在此代码中imwrite.我该如何做到这一点?

c++ opencv video-capture image-processing face-recognition

2
推荐指数
1
解决办法
5238
查看次数