c – 在图片框中以cv :: Mat格式显示网络摄像头源

我正在使用OpenCV从网络摄像头中获取实时流并在检测到面部后.我正在调整它们的大小,以便只显示我的脸.

但问题是我在C Windows窗体中做了所有这些,我希望它显示在PictureBox中,而不是在OpenCV imshow()窗口中显示.

我正在使用cv :: Mat,所以我在图片框中显示有很多问题.

我已经尝试将其转换为IplImage,但这也无效.
此外,我尝试了谷歌,但我无法找到一个有效的解决方案.我已经尝试了3天了.

这是我显示代码

face = getFace(frame);
                 cv::imshow("window",face);

框架和面部是cv :: Mat

解决方法

这是一个C CLR函数,可以在任何Windows窗体控件上绘制OpenCV垫:
void DrawCVImage(System::Windows::Forms::Control^ control,cv::Mat& colorImage)
{
    System::Drawing::Graphics^ graphics = control->CreateGraphics();
    System::IntPtr ptr(colorImage.ptr());
    System::Drawing::Bitmap^ b  = gcnew System::Drawing::Bitmap(colorImage.cols,colorImage.rows,colorImage.step,System::Drawing::Imaging::PixelFormat::Format24bppRgb,ptr);
    System::Drawing::RectangleF rect(0,control->Width,control->Height);
    graphics->DrawImage(b,rect);
    delete graphics;
}

功能只能绘制8位3通道图像.

尝试尝试其他图像类型的位图像素格式.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...