首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与OpenCV共享C++对象

与OpenCV共享C++对象
EN

Stack Overflow用户
提问于 2017-05-16 00:56:51
回答 1查看 372关注 0票数 10

设想情况:

C++程序进程使用OpenCV捕获图像。使用的另一个进程与第一个程序具有共享内存区域(使用mmap)。

问题:

如何在Python进程中创建对共享内存区域中已经存在的相同映像的引用?Python过程中的这个部分可以编写成一个C模块并导入到Python中。

对于我的特定需求,只有C++进程创建和写入数据,而process只读取(和处理)它。

额外信息:

给定相同的图像,data字段C++ cv::Matnumpy.array是相等的(相同的大小和内容)。所以没有必要改变。

由于这些语言分隔了内存管理器,所以可能需要使用一些外部同步(例如。(信号量)避免一个进程使用从另一个进程释放的区域。

我的问题是在Python对象中创建数据字段指向共享内存中的特定区域的对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-16 20:38:28

以下选项可用于为预先分配的内存缓冲区创建cv::Matnumpy.array头:

  • 对于cv:: Mat,有一个构造函数在预先分配的内存上创建cv::Mat头(在这种情况下,Mat的析构函数不会释放内存): cv::Mat(int rows, int cols, int type, void * data, size_t step = AUTO_STEP)
  • 来自缓冲区的numpy数组numpy.frombuffer(buffer, dtype=float, count=- 1, offset=0, *, like=None)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43990906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档