当前位置: 首页 > 知识库问答 >
问题:

OpenCV网络摄像头饲料不显示在Picture Box视觉工作室2015

有凯泽
2023-03-14

大家好,我使用opencv从默认摄像头获取网络摄像头提要,我希望在windows窗体上的图片框中显示它。我的网络摄像头打开了,但由于某些原因,该提要从未显示在我的picturebox上。请有人帮我指出/解决这个问题,因为我现在被困在这里。提前谢谢。

以我的形式。h、 我有这个代码可以将图片盒发送到myform。cpp文件

System::Windows::Forms::PictureBox^ mypicbox1(void)  
{
    opencv_gui::MyForm aform;
    return aform.pictureBox1;
}

绘制代码获取视频并放入我的图片框myform.cpp是:

void opencv_gui::DrawCvImage(const cv::Mat& cvImage)
{
    System::Windows::Forms::PictureBox^ pictureBox = mypicbox1();
    // only color images are supported
    assert(cvImage.type() == CV_8UC3);

    if ((pictureBox->Image == nullptr) || (pictureBox->Width != cvImage.cols) || (pictureBox->Height != cvImage.rows))
    {
        pictureBox->Width = cvImage.cols;
        pictureBox->Height = cvImage.rows;
        pictureBox->Image = gcnew System::Drawing::Bitmap(cvImage.cols, cvImage.rows);
    }

    // Create System::Drawing::Bitmap from cv::Mat
    System::Drawing::Bitmap^ bmpImage = gcnew System::Drawing::Bitmap(
        cvImage.cols, cvImage.rows, cvImage.step,
        System::Drawing::Imaging::PixelFormat::Format24bppRgb,
        System::IntPtr(cvImage.data)
    );

    // Draw Bitmap over a PictureBox
    System::Drawing::Graphics^ g = System::Drawing::Graphics::FromImage(pictureBox->Image);

    g->DrawImage(bmpImage, 0, 0, cvImage.cols, cvImage.rows);
    pictureBox->Refresh();

    delete g;
}


//camera feed
int opencv_gui::video_cap(void)
{
    VideoCapture cap;

    if (!cap.open(0)) // open the default camera (camera 0), use something different from 0 otherwise;
        return 0;
    for (;;)
    {
        Mat frame;
        cap >> frame;
        if (frame.empty()) break; // end of video stream
        DrawCvImage(frame);
        if (waitKey(10) == 27) break; // stop capturing by pressing ESC 
    }
    // the camera will be closed automatically upon exit
    // cap.close();
    return 0;
}

这是我的调试日志:我使用了箭头,如“

>

  • cvImage{标志=1124024336昏暗=2行=480...}cv::垫

    数据0x000026AC2146F80无符号字符**(*cvImage)。数据0“”无符号字符

    大小{p=0x000000DBDFF0DE80}cv::MatSize

    p 0x000000DBDFF0DE80 int**(*cvImage). size. p 0 int

  • 共有2个答案

    吕和风
    2023-03-14

    试试这个

    private: System::Void button2_MouseClick(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e)
    {
        if (button2->Text == "Stop")
        {
            button2->Text = "Start";
    
        }
        else if (button2->Text == "Start")
        {
            button2->Text = "Stop";
    
        }
    
         VideoCapture capture(0);
         Mat frame;
    
         while (button2->Text == "Stop")
         {
             capture.read(frame);
             System::Drawing::Graphics^ graphics2 = pictureBox1->CreateGraphics();
             System::IntPtr ptr2(frame.ptr());
             System::Drawing::Bitmap^ b2 = gcnew System::Drawing::Bitmap(frame.cols,
                 frame.rows, frame.step, System::Drawing::Imaging::PixelFormat::Format24bppRgb, ptr2);
             System::Drawing::RectangleF rect2(0, 0, pictureBox1->Width, pictureBox1->Height);
             graphics2->DrawImage(b2, rect2);
    
         }
     }
    
    刁星渊
    2023-03-14

    我不得不稍微编辑一下我的代码,但我使用这里提供的答案基本上解决了我的问题:https://stackoverflow.com/a/12628861/5728859

     类似资料:
    • 问题内容: 我一直在尝试使用Python创建一个简单的程序,该程序使用OpenCV从我的网络摄像头获取视频供稿并将其显示在屏幕上。 我知道我之所以在这里,是因为创建了窗口,并且网络摄像头上的灯闪烁了,但是它似乎在窗口中什么都没有显示。希望有人可以解释我在做什么错。 在不相关的注释上,我注意到我的网络摄像头有时会在中更改其索引号,有时我需要输入0、1或2,即使我只连接了一个摄像头,也没有拔下插头(我

    • 这是我的密码: 以下是我遇到的错误: 错误:OpenCV(4.2.0)C:\项目\opencv-python\opencv\模块\imgproc\src\color.cpp:182:错误:(-215:断言失败)!_src.empty函数'cv::cvtcoly' 错误Traceback(最近的调用最后)在3而True: 4 ret, img=cap.read () ---- 错误:OpenCV(4

    • 这是我第一次在Android上使用相机开发,我已经测试了我在链接中找到的相机演示https://thenewcircle.com/s/post/39/using__the_camera_api 但我对这段代码有一些问题:( 首先,这似乎有必要将这一行添加到Preview(上下文上下文)的代码中 (如果我不添加此测试,程序将崩溃) 就在这条线之前 因为setType()调用现在似乎被弃用了(这就是A

    • 我们使用的是visual studio 2015,并有以下字体:- 使用visual studio 2015 typescript编译器,这可以归结为:- 这很好,在chrome上运行良好,但是,我们希望它也能在ie10 / ie11上运行。 我相信我们需要“多填充”这个,以便将生成的js文件转换为es5。 目前visual studio中有什么可以做到这一点吗?这种转换的最佳方式是什么?或任何样

    • 我目前正在做一个项目,从网络摄像头捕捉视频,并通过UDP发送编码流来做实时流。 有人说从cap.read得到的帧已经是解码帧,我不知道这是如何以及何时发生的。我想要的是编码的帧或流。我应该怎么做才能得到它?我应该再编码一次吗?

    • 我需要使用openFileDialog读取Mat格式的图像,并将其显示在pictureBox中(在VisualC/VisualStudio2010中)。 我找了很多,但找不到答案。 我正在使用此代码: