opencv C ++: Как отобразить захват веб-камеры в приложении Windows Form? - PullRequest
0 голосов
/ 06 марта 2012

Я использую «imwrite» для отображения. BackgroundImage успешно отображает изображение в форме 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;
    }
}

когда я пытаюсь отобразить без imwrite и использовать «Bitmap», он не будет работать, вот источник:

this->panel1->BackgroundImage = System::Drawing::Bitmap(frame);

что-то не так с моим кодом? спасибо за помощь :)))

Ответы [ 2 ]

0 голосов
/ 11 марта 2012

Для отображения изображения вам может понадобиться это (другая альтернатива),

pictureBox1->Image = gcnew //replacement of cvShowImage

System::Drawing::Bitmap(Img->width, Img->height, Img->widthStep,

System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr)Img->imageData);

pictureBox1->Refresh();
0 голосов
/ 06 марта 2012

Я думаю, это потому, что конструктор растрового изображения не принимает класс Mat в качестве параметра напрямую. Вам следует преобразовать данные из OPENCV Mat в .NET Bitmap самостоятельно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...