我意识到这个问题可能会以"没有足够的研究"来结束。然而,我确实花了 2 天的时间在谷歌上搜索它,但没有找到决定性的答案。
好吧,我有一个生成窗口的应用程序,而不是用 c++ 编写的。此应用程序可以具有带有 dll 的 c 接口。现在我希望使用OpenCV的强大功能,所以我开始在dll上进行扩展。ss从/向应用程序传递图像数据几乎是不可能的(只能直接传递c字符串和双精度值 - 使用硬盘驱动器进行绘图对于实时图像处理来说太慢了)。
我正在考虑让opencv直接将图像数据绘制到窗口上。我可以轻松获得窗口句柄,那么是否可以让 openCV 在另一个窗口上"绘制他们的数据 - 或者更好地绘制到另一个窗口中?这甚至可以使用任何库(FFMPEG 或其他东西)吗?
是的,这是可能的,但它远非理想。可以使用 GDI 在另一个窗口的顶部绘制(只需将 IplImage 转换为 HBITMAP)。另一种技术是在无边框分层窗口中进行此类绘制。
一种更简单的方法是,由于您拥有这两个应用程序,因此使用标准 C 数据类型编写一个在它们之间传递IplImage
的函数,毕竟,IplImage
只不过是从这些标准类型构建的数据类型。
以下是您将IplImage
分解为 5 个标准参数的方法:
- 图像的大小(整数,整数)(宽度/高度);
- 图像的(整数)位深度;
- 通道的数量(整数);
- 以及图像的(无符号字符*)像素;
在另一侧收到这些参数后,您可能想知道:如何从头开始组装IplImage
?呼叫cvCreateImageHeader()
,然后呼叫cvSetData()
。