大家好,我使用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;
}
这是我的调试日志:我使用了箭头,如“
>
数据0x000026AC2146F80无符号字符**(*cvImage)。数据0“”无符号字符
大小{p=0x000000DBDFF0DE80}cv::MatSize
p 0x000000DBDFF0DE80 int**(*cvImage). size. p 0 int
试试这个
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);
}
}
我不得不稍微编辑一下我的代码,但我使用这里提供的答案基本上解决了我的问题: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中)。 我找了很多,但找不到答案。 我正在使用此代码: