【发布时间】:2011-07-29 10:08:36
【问题描述】:
我有一个 USB 摄像头 (uEye),它有一个 C++ 接口,允许您配置摄像头的一些功能。 C++ 程序可以从相机读取图像数据并将其存储在预先分配的内存中的某个位置。所有这些都在 Windows 下运行。
带有 numpy 的 Python 为我提供了一个简单的环境来处理图像并花一些时间处理我的处理算法。
我想做的是:
- 使用c++程序配置摄像头并获取图像(以视频速率),
- 将数据传递给 Python
- 在 Python 中处理数据
我的印象是我不想在 Python 中嵌入 C++ 或在 C++ 中嵌入 Python,因为我更喜欢有两个独立的系统(所以我可以在没有 Python 的情况下使用相机,或者使用 Python 的东西没有相机)。
到目前为止,我可以找到使用管道、套接字或映射内存共享一些数据的方法,尽管它似乎仅限于少量数据或字符串。但是,我找不到的是这是否足够快以及我应该尝试实施的指示。我应该这样做吗?
如果这是一个坏主意,还有什么更好的选择?在 C++ 中嵌入 Python 代码,反之亦然?或者完全放弃 Python,因为节省的开发时间并不能抵消让进程间通信正常工作的额外努力?
【问题讨论】:
-
上次我用 Python(用 numpy)实现图形算法太慢了,我不得不把它翻译成 C++。速度提高了大约 x20。所以如果你想实时做,也许你应该重新考虑。
-
我明白你的意思。也许瓶颈在于 python 中的处理,并且使用文件作为传输介质的速度足以跟上 Python 处理可达到的帧速率。然后,当确定了所需的处理步骤(并且我用 matplotlib 制作了一些彩色图)时,我们可以考虑将所有内容移至 c++。我只是希望我可以跳过从磁盘写入/读取文件并从内存中执行相同操作。