【发布时间】:2012-09-27 07:48:43
【问题描述】:
我正在使用 OpenCV 从网络摄像头获取实时流并在检测到人脸之后。我正在调整它们的大小,以便只显示我的脸。
但问题是我在 C++ Windows 窗体 中执行所有这些操作,我希望它显示在 PictureBox 中,而不是在 OpenCV imshow() 窗口中显示。 p>
我使用的是cv::Mat,所以在图片框中显示时遇到很多问题。
我尝试将其转换为IplImage,但这也不起作用。
另外,我尝试过谷歌,但我找不到有效的解决方案。我已经尝试了 3 天。
这是我的显示代码:
face = getFace(frame);
cv::imshow("window",face);
其中frame 和face 是cv::Mat
【问题讨论】:
-
要显示到图片框中,您需要将该 IplImage 转换为位图。
-
你能提供那行代码吗?
-
我只有用于构建位图的 C# 代码。它采用数据指针 (IplImage->dataOrigin) 和大小来构造它。由于 PictureBox 确实是 C# 的东西,所以我没有在 C++ 中使用它。对于 C++,我宁愿推荐使用 OpenGL 或 DirectX 显示,因为它的速度要快得多。
-
如果可能,尝试使用 Qt 进行显示...它很简单...您可以使用 Qt 创建的显示窗口而不是 OpenCV 窗口显示 OpenCV 读取的任何图像...特别是您需要的大图像向下滚动 n 右...
标签: c++ winforms opencv picturebox