我有一个USB摄像头(uEye),它有一个C ++接口,允许您配置摄像头的某些功能。 C ++程序可以从摄像机读取图像数据并将其存储在预先分配的内存中。所有这些都在Windows下运行。
带有numpy的Python为我提供了一个简单的环境来操作图像并花费一些时间处理我的处理算法。
我想做的是:
我的印象是我不想在C ++中用Python或Python嵌入C ++,因为我更喜欢有两个独立的系统(所以我可以使用没有Python的相机,或者使用Python的东西没有相机)。
到目前为止我能找到的是使用管道,套接字或映射内存共享某些数据的方法,尽管它似乎仅限于少量数据或字符串。然而,我找不到的是一个表明它是否足够快以及我应该尝试实施的东西。我应该这样做吗?
如果这是一个坏主意,那么什么是更好的选择呢?将Python代码嵌入C ++中,反之亦然?或者将Python放在一起,因为开发时间的节省不会抵消使进程间通信工作的额外工作量?
答案 0 :(得分:3)
PyPy博客上有一个关于实时视频处理的recent post。在示例中,他们使用mplayer来抓取并显示视频,这可能比尝试与您的C ++程序接口更好(假设它适用于您的网络摄像头)。如果没有,按照这些方法思考一个简单的解决方案就是连接两个应用程序的stdout / stdin。也可以将PyPy视为视频处理。
答案 1 :(得分:2)
由于您说设备具有“C ++接口”,我假设它提供了一个头文件+ DLL,您可以通过API链接到该设备并控制该设备。在这种情况下,最快的方法是将此API包装在Python中(使用Swig或其他C ++ - to-Python API工具)。这将只提供几个过程调用的非常低的开销,将数据直接作为指针传递给内存。
如果你不想“嫁给”Python,也可以用C ++编写一个控制应用程序,但我认为将API连接到Python的最快捷,最方便的方法就是上面的。