vs2013在图像处理中的应用(7):开发Python扩展

快乐虾

http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)

欢迎转载,但请保留作者信息

很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境。在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境。

在图像处理中,虽然已经可以用python操纵opencv完成一些算法,但总免不了需要自己写一些C/C++的代码,因而我们学习一下如何用vs开发python的扩展。

1  阶乘示例

在这个示例中,我们用C++实现一个阶乘的函数并用python调用它。

首先创建一个VS的Dll工程PyExt,再按照Python扩展的写法添加代码:

// PyExt.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "PyExt.h"
#include <Python.h>

int fact(int n)
{
	if (n <= 1)
		return 1;
	else
		return n * fact(n - 1);
}

PyObject* wrap_fact(PyObject* self, PyObject* args)
{
	int n, result;

	if (!PyArg_ParseTuple(args, "i:fact", &n))
		return NULL;
	result = fact(n);
	return Py_BuildValue("i", result);
}

static PyMethodDef exampleMethods[] =
{
	{ "fact", wrap_fact, METH_VARARGS, "Caculate N!" },
	{ NULL, NULL }
};

extern "C"
PYEXT_API void initPyExt()
{
	PyObject* m;
	m = Py_InitModule("example", exampleMethods);
}

这段代码编译有错误,需要将python的包含路径加上:

接着加上python2.7库文件所在的目录:

将DLL的扩展名改为pyd,将输出目录设置为python扩展DLL所在的目录:

因为我们装的python是Release版的,因此这个扩展也只能用Release生成,否则有链接错误。

生成!一切正常。

在命令行下测试:

搞定!

2  代码调试

下面试试用VS2013调试这个扩展。

首先在解决方案中添加一个Python Application,写上几行测试代码:

import PyExt

result= PyExt.fact(5)

print result

print "ok"

设置为启动项目并运行:

此时进行的是脚本的调试。

修改python工程的属性:

钩上这里的Enable native code debugging。

在fact函数中设置断点:

再F5运行:

正确中断下来,我们可以像普通C/C++程序一样调试。

3  脚本与C/C++的混合调试

要实现脚本与C/C++代码的混合调试,需要下载python2.7.9的pdb文件:

https://github.com/Microsoft/PTVS/wiki/Symbols-for-Python-mixed-mode-debugging

将文件解压缩到C:\Python27\python-2.7.9-pdb

再将此目录添加到VS的符号查找路径中:

再次按F5,VS首先在Python脚本上中断下来:

再按F11执行下一条语句的时候,VS停在了我们的wrap函数入口上:

单步执行到函数的末尾,再按F10,VS又停在了Python脚本上!!

PTVS太强大了~~~~~~~

??

时间: 2024-09-30 06:54:43

vs2013在图像处理中的应用(7):开发Python扩展的相关文章

vs2013在图像处理中的应用(4):用Traits进行界面开发

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. 在开发科学计算程序时,我们希望快速实现一个够用的界面,让用户能够交互式的处理数据,而又不希望

vs2013在图像处理中的应用(8):用SWIG自动包装C/C++接口

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. 接下来尝试用SWIG自动将C/C++的接口封装为Python可用的pyd,仍以之前的阶乘代码

vs2013在图像处理中的应用(5):3D显示

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. VTK主要用于三维计算机图形学.图像处理和可视化. 1.  安装vtk VTK不能通过pip

vs2013在图像处理中的应用(2):用sympy进行符号运算

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. sympy是python的数学符号计算库,可用于数学表达式的符号推导和演算. 1.1.1 

vs2013在图像处理中的应用(1):安装基本模块

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. 1.1.1  安装Python 出于对兼容性的考虑,在此选择python-2.7.9,win

vs2013在图像处理中的应用(6):使用OpenCV进行图像处理

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. opencv是一个用于图像处理的强大工具,考虑到python的支持,我们选择2.4.11版本

vs2013在图像处理中的应用(3):用matplotlib进行绘图

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要有此需求,希望能够有一个比较好用的开发环境.在学校的时候做图像处理一直用的是matlab,不过现在正好在做VELT的开发,尝试用vs2013+python构造一个适合于自己用的开发环境. Matplotlib是一个Python的图形框架,类似于MATLAB和R语言.我们选择用它进

MyEclipse10中配置开发Python所需要的PyDev 绝对靠谱 不忽悠!

在NLP(自然语言处理)这个领域中,Python具有良好的声誉,于是也想学习一下.首先第一步就是需要在计算机上配置Python环境.由于Python自带的编辑器太简单,使用起来不顺手,于是就考虑在相对熟悉的MyEclipse中配置PyDev来进行Python开发. 在网上搜了一下配置方法,发现介绍基于MyEclipse10配置Dev的网页很少,而且需要配置的地方有点多,于是自己亲自来摸索,终于成功.总体上说,这个工作需要两大步:1从MyEclipse的MarketPlace中下载安装PyDev:

VS2013 中配置 Qt5.3 开发环境(32位)

需要的东西: 1.VS2013 2.Qt5.3 3.Visual Studio Add-in 1.2.3 for Qt5 其中2和3项可在Qt官网下载:http://qt-project.org/downloads (第3项在download页面最下方的other downloads中找到) 要注意的是,这里使用的是 Qt 5.3.0 for Windows 32-bit (VS 2013, 626 MB) ,使用32位是为了兼容更多的机子,以下的配置也是针对32位的,相比64位可能少一点步骤