【问题标题】:opencv C++ : How to display webcam capture in windows form application?opencv C++:如何在 Windows 窗体应用程序中显示网络摄像头捕获?
【发布时间】:2012-03-23 16:29:54
【问题描述】:

我使用“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 的情况下显示并使用“位图”时,源代码在这里不起作用:

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

我的代码有问题吗?谢谢你的帮助:)))

【问题讨论】:

标签: c++ opencv c++-cli


【解决方案1】:

我认为是因为Bitmap的构造函数没有直接将class Mat作为参数。 您应该自己将数据从 OPENCV Mat 转换为 .NET Bitmap :)

【讨论】:

    【解决方案2】:

    为了显示图像,您可能需要这个(另一种选择),

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

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 1970-01-01
      • 2023-04-08
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多