我尝试使用imwrite
to 成功在 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;
}
}
当我尝试使用Mat
内存中的 OpenCV 时,我无法让它工作。以下代码片段是我迄今为止尝试过的:
this->panel1->BackgroundImage = System::Drawing::Bitmap(frame);
或者
this->panel1->BackgroundImage = gcnew System::Drawing::Bitmap( frame.widht,frame.height,System::Drawing::Imaging::PixelFormat::Undefined, ( System::IntPtr ) frame.imageData);
我想frame
在这段代码中显示而不使用imwrite
. 我该如何做到这一点?