原文:VS2019 C++ 调用python函数/类对象的方法_ 蜗牛在听雨的博客-CSDN博客_c++调用python函数

1、c++调用python类(传图像参数) ,编译出错,解决方法:

因为需要转换图像格式,从opencv的Mat格式转为python的PIL格式,需要用到numpy的C++接口。但是编译出错,目前看到这篇文章写的最精准,也解决了我的问题。编译错误内容:

无法解析的外部符号 __imp___Py_RefTotal
无法解析的外部符号 __imp___Py_NegativeRefcount,该符号在函数 __import_array 中被引用

2、总结如下:

1、引入头文件#include"arrayobject.h" (文件在C:\Program Files\Python36\Lib\site-packages\numpy\core\include\numpy目录下)

2、添加import_array()函数。

3、修改两个头文件object.h和pyconfig.h (文件在C:\Program Files\Python36\include目录下)
在object中,修改54行的

/* Py_DEBUG implies Py_TRACE_REFS. */
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
#define Py_TRACE_REFS
#endif

修改为

/* Py_DEBUG implies Py_TRACE_REFS. */
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
//#define Py_TRACE_REFS
#endif

在pyconfig中,修改358行的

/* Py_DEBUG implies Py_TRACE_REFS. */
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
//#define Py_TRACE_REFS
#endif

修改为:

#ifdef _DEBUG
//# define Py_DEBUG
#endif

代码如图所示:

3、 传图像的源代码如下:

//读图像,以array形式传递参数 Mat sml_img = imread("1.png",0);if (!sml_img.isContinuous()) { sml_img = sml_img.clone(); }npy_intp dims[] = { sml_img.rows, sml_img.cols};PyObject *pValue = PyArray_SimpleNewFromData(2, dims, NPY_UINT8, sml_img.data);//用tuple封装参数传入pythonPyObject* args = PyTuple_New(1);PyTuple_SetItem(args, 0, pValue);//返回值PyObject *pReturn = PyObject_CallObject(pFunc, args);PyArrayObject* ret_array = (PyArrayObject*)PyList_GetItem(pReturn, 0);PyArrayObject* ret_params = (PyArrayObject*) PyList_GetItem(pReturn, 1);//返回的numpy矩阵的row和colint Rows = ret_params->dimensions[0], columns = ret_params->dimensions[1];std::cout << Rows << "  " << columns << std::endl;//获取py返回值,很多种方式,我只是为了解析返回的两个数组//#define out_Value(i,j) (*(npy_float64*)((PyArray_DATA(ret_params) +                \//(i) * PyArray_STRIDES(ret_params)[0] +   \// (j) * PyArray_STRIDES(ret_params)[1])))int a = *((int *)PyArray_GETPTR2(ret_params, 2, 1));//转换成Mat,图像显示npy_intp *shape = PyArray_SHAPE(ret_array);Mat big_img(shape[0], shape[1], CV_8UC1, PyArray_DATA(ret_array));imshow("t",big_img);waitKey(0);

VS2017 QT/C++ 调用python函数传图像相关推荐

  1. 【Qt】调用Python函数:无参数、单个参数、多个参数、数组参数

    一.链接配置 如果缺少头文件需要安装python3-dev: sudo apt-get install python3-dev 链接libpython3.4库,添加头文件路径,以Qt为例: INCLU ...

  2. TX2(Linux)在Qt中调用python函数

    实验环境:TX2使用JetPack-L4T-3.3-linux-x64_b39进行环境安装 详情参考:Jetpack3.3刷机 安装的python版本为3.5.2 1.创建Qt工程 在Qt中创建一个Q ...

  3. 【Qt】Qt中调用python接口

    在Qt程序中调用python函数从步骤 1.在pro中添加python的头文件路径和库 INCLUDEPATH += /usr/include/python3.4 LIBS += -L /usr/li ...

  4. java调用python,传参json字符串,含中文传参

    java调用python,传参json字符串 python脚本内容(test.py) # -*- coding: utf-8 -*-def main(input):return input java调 ...

  5. assert函数_悉数Python函数传参的语法糖

    TIOBE排行榜是程序开发语言的流行使用程度的有效指标,对世界范围内开发语言的走势具有重要参考意义.随着数据挖掘.机器学习和人工智能相关概念的风行,Python一举收获2018年年度语言,这也是Pyt ...

  6. Qt Creator与Qt+VS2015调用Python代码的实现

    下面来介绍分别用Qt Creator与Qt+VS2015调用Python代码,首先电脑中要安装Python IDE与Qt.我电脑中安装的是Python37,VS2015+Qt5.8.Qt Creato ...

  7. C++和Python混合编程:C++调用Python函数

    文章目录 一.C++直接运行python代码的控制台Demo 二.环境配置 三.C++调用Python函数 C++传入Python的参数格式转换 C++调用Python[有参有返回值]函数 C++运行 ...

  8. C++调用Python函数

    From: http://www.flatws.cn/article/program/c/2010-08-24/9677.html Python代码在实现某些功能的时候非常方便,如果能够将Python ...

  9. python中execute函数_在excel中调用python函数

    效果: 通过excel引用在py文件中写好的load_settle()函数,可以快捷的获取对应的历史结算价. 使用方法: 1.首先安装office,我用的是2016版本. 2.安装python,推荐使 ...

最新文章

  1. 栈和堆的区别(转 知乎)
  2. 历年计算机一级考试题库及答案,全国计算机一级考试试题库及答案
  3. AWS Messaging Services:选择合适的服务
  4. c++心形代码_c语言心形告白代码实现
  5. android 4.4 屏幕方向,Android4.4屏幕旋转功能
  6. java安全(四) JNDI
  7. 一张图看懂python编程
  8. unity 斥力_基于绝对能量守恒原理的基础物理理论-国家科技图书文献中心.PDF
  9. 给定数组,查找最小的k个元素或最大的k个元素
  10. 大学算法分析与设计复习总结
  11. Ubuntu18.04下编译tslib触摸屏驱动
  12. JS判断不同的浏览器和版本,提示浏览器版本过低,兼容IE8到IE11
  13. 使用SAXReader以XML方式解析excel
  14. 考勤系统与服务器链接,考勤机怎么连接服务器
  15. Oracle数据库的备份方法
  16. 领克无线carplay适配方案展示
  17. 不要把敏感信息写在k8s的env上
  18. 2021年N1叉车司机复审考试及N1叉车司机模拟试题
  19. 寄给J.Keisler教授的一份电子生日贺卡(修正版)
  20. 堆、栈,队列,栈,树的个人理解和记录

热门文章

  1. C# 各版本新增功能
  2. 使用 SourceTree 操作时弹出 password required
  3. ubuntu和windows上pip和windows上conda国内源更新module
  4. JMeter基础之组件的作用域与执行顺序
  5. 08-09 性能测试--CPU分析
  6. 计算机显微视觉相关概念,机器视觉的概念及常见应用
  7. C语言分支结构while,C语言学习:分支结构和循环结构的总结(收藏)
  8. 2021 年 Angular vs. React vs. Vue 前端框架对比
  9. 新手学习 react 迷惑的点(完整版)
  10. 一些Vue开发小技巧,让你开发更便捷