gpt4 book ai didi

python - 如何将 opencv Mat 类型传递给 Python 并取回数组?

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:48 25 4
gpt4 key购买 nike

我有一个深度学习 python 代码,它获取图像并返回该图像中的检测位置数组。

我已经用 C++ 开发了项目的所有其他部分,我想将 opencv Mat 图像 (cv::Mat) 传递给 python 脚本,它会向 C++ 返回一个数组。

有没有办法将这些数据类型从/向 C++/Python 传递?我应该使用什么功能?

最佳答案

所以这可以通过两种方式实现。

1.) 你可以为 python 开发一个后端服务器,然后公开那些 api,然后你可以使用你的 api 发送数据并取回结果。

2.) 你也可以让你的 python 函数被 c++ 程序调用,为此你可以使用像 Python.h 这样的库来调用和接收来自 python 脚本的数据。

例如,假设您有一个名为 aiDosomething.py 的 python 文件,它有一个执行检测任务的函数 detect。然后在 C++ 中你可以做类似的事情

#include <Python.h>

int main()
{

pModule = PyImport_ImportModule("aiDosomething");

//chose the function in file Sample

pFunc = PyObject_GetAttrString(pModule,"detect");

pDict = PyModule_GetDict(pModule); // Create a dictionary for the contents of the module.

//make the args to be passes in the function

pArgs = PyTuple_New(1); // Create a Python tuple to hold the arguments to the method.
PyTuple_SetItem(pArgs, 0, insertArray); // insertArray can be your cv::mat array

//run the code and get the result
PyObject* pResult = PyObject_CallObject(pFunc, pArgs);
return 0;

}

为了简单起见,您可以将 Python 代码和 C++ 放在同一目录下。

关于python - 如何将 opencv Mat 类型传递给 Python 并取回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55002024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com