eureka_771 2024-05-15 12:24 采纳率: 80%
浏览 5

C++中引用 Python报错

在进行C++中借用提供的API引用Python文件时出现问题
导入这个文件的时候一直找不到,不停的换位置,即便是使用绝对路径仍然出现问题。

img


以下为函数代码。

Mat CImageProcessing::RCNNDetect(Mat src)
{
    //初始化python解释器
    Py_Initialize();
    if (!Py_IsInitialized()) {
        cout << "python init fail" << endl;
    }
    //PyRun_SimpleString:把python代码当作一个字符串传给解释器来执行。
    //PyRun_SimpleString("import sys");
    PyRun_SimpleString("D:/BEST_TIN/MFC/MFC-ImageSystem-master 2/MFC-ImageSystem-master/ImageSystem/script/");

    //PyImport_ImportModule:动态加载python模块,相当于导入python脚本文件
    PyObject* pModule = PyImport_ImportModule("RCNN");
    if (pModule == NULL) {
        cout << "module not found" << endl;

    }

    PyObject* pFunc = PyObject_GetAttrString(pModule, "RCNN_detect");
    if (!pFunc || !PyCallable_Check(pFunc)) {
        cout << "not found function add_num" << endl;
    }

    /*将参数转换为PyObject类型*/
    PyObject* args = matToNdarray(src);

    /*PyObject_CallObject:在C程序中调用python函数
    参数1:通过导入函数获得的函数对象
    参数2:被调用函数所需的参数*/
    PyObject* pRet = PyObject_CallObject(pFunc, args);

    //释放参数内存
    Py_DECREF(args);

    int res = 0;
    //把参数返回值转换为C类型
    
    Mat dst = ndarrayToMat(args);
    //释放返回值内存
    Py_DECREF(pRet);
    //cout << res << endl;

    Py_DECREF(pModule);
    Py_DECREF(pFunc);
    /* 撤销Py_Initialize()和随后使用Python/C API函数进行的所有初始化,
    并销毁自上次调用Py_Initialize()以来创建并为被销毁的所有子解释器。*/
    Py_Finalize();
    return dst;
}

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-15 12:24
    关注

    请检查Python库的引入路径和环境设置。

    以上回复有部分引自免费微信小程序:皆我百晓生。 如问题尚未解决,还请稍待,如有疑问请回复进一步沟通。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月15日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表