¿Cómo mostrar un cv :: Mat en una aplicación de Windows Form?

Intenté usarimwrite para mostrar con éxito una imagen en un formulario de Windows, pero daña el disco, por lo que necesito una mejor manera de hacerlo.

Abajo, es mi código actual, que escribe la imagen temporalmente en el disco duro:

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;

        }
    }

Cuando intento usar OpenCVMat que está en la memoria, no puedo hacer que funcione. Los siguientes fragmentos de código son lo que he probado hasta ahora:

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);

Quiero mostrarframe en este código sin usarimwrite. ¿Cómo logro esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta