我试图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.我该如何做到这一点?