草庐IT

cythonized

全部标签

python - 从 C++ 函数 Cython 返回包含 PyObject 的复杂对象

我正在尝试使用Cython将一些C++类和函数包装到Python。到目前为止,我已经包装了2个类,现在我想包装一个函数。函数的签名是std::map>analyze(PyObject*img,LandmarkDetector::CLNF&clnf_model,LandmarkDetector::FaceModelParameters¶ms);我已经成功包装了CLNF和FaceModelParameters类,我无法包装这个analyze功能。函数处理PyObject*因为它处理opencv,我希望能够在语言之间轻松传递它们。我正在使用thesefunctions为了在cv::P

Python 字典与 C++ 标准 :unordered_map (cython) vs cythonized python dict

我试图测量python字典、cythonizedpython字典和cythonizedcppstd::unordered_map之间的性能,只做一个初始化过程。如果编译cythonizedcpp代码我认为它应该比纯python版本更快。我使用4种不同的场景/符号选项进行了测试:使用std::unordered_map和Cythonbooknotation的CythonCPP代码(定义一对并使用插入方法)使用std::unordered_map和python符号(map[key]=value)的CythonCPP代码使用python字典(map[key]=value)的Cython代码(

python - 如何使用 Cython 公开将 C++ 对象返回给 Python 的函数?

我正在使用Cython构建C++Python绑定(bind),但我找不到如何从Python方法返回C++对象。更具体地说,在编译peak_detection_.pyx时,如下所示,我得到peak_detection_.pyx:35:36:Cannotconvert'vector[Peak]'toPythonobject最后几行defgetPeaks(self,data):returnself.thisptr.getPeaks(data)我理解这个错误,但我不介意一些关于如何修复它的帮助/指示。peak_detection.hpp#ifndefPEAKDETECTION_H#define

c++ - Cython 和 C++ 类构造函数

当一个类的C++实例应提供给另一个包装的构造函数类如下所述?请查看PySession类的pyx文件上的注释,它将pythonPyConfigParams对象作为参数,然后需要从中提取值以构建C++ConfigParams目的。然后使用ConfigParams对象来提供构造函数session。最好有一个程序可以让我“注入(inject)”由PyConfigParams对象包装的ConfigParamsc++对象直接进入Session的构造函数,不用拆它首先构建一个新的C++对象来提供给构造函数。这当然有效。然而,这是一种实现该解决方案的笨重且残酷的方法,更不用说不可靠了。我知道PyCap

c++ - Cython - 共享 Cython 模块

我有cython模块base.pyx和derived.pyx。base.pyx及其导入定义base.pxd文件使用cimport在derived.pyx文件中定义和使用>。文件放置在here.在我的Python应用程序中使用从cython生成的共享对象时,模块被正确导入,但是在使用库时总是出现错误提示ImportError:Nomodulenamed'base'在Cpp应用程序中。我还在我的Cpp应用程序中添加了当前路径PyObject*path=PySys_GetObject("path");PyObject*result=PyObject_CallMethod(path,"appe

c++ - 在 Cython 中包装 C++ 模板函数/方法

我正在尝试用Cython包装一些C++代码。我有一个使用模板方法的类,但它本身不是模板。classSomeClass{templateSomeClass(T&spam);};由于类不是模板而只是构造函数,所以我不能像这样在Cython中将类声明为模板。#wrong!cdefexternfrom"SomeClass.h":cppclassSomeClass[T]:SomeClass(T&spam)如何包装模板方法? 最佳答案 对于非构造函数模板方法,使用以下非模板类:classSomeClass{templatevoidother(T

c++ - 模板类中的 Cython C++ 静态方法

问题我有一个C++模板类,它有一个静态方法。它看起来或多或少像这样:templateclassFoo{staticstd::shared_ptr>doSth();}所以在C++中你可以这样调用它:Foo::doSth();.然而在Cython中,调用静态方法的方式是使用类名作为命名空间:cdefexternfrom"Bar.h"namespace"Bar":shared_ptr[Bar]doSth()#assumingshared_ptrisalreadydeclared但这没有模板的概念。显然,简单地传递Foo作为命名空间不起作用,因为它转换为Foo::doStr()在C++中,没有

python - 如何使用 cython 编译扩展?

我正在尝试从示例页面编译一个简单的cython扩展here在我的Windows764位机器上安装了Python2.664位版本。我从Gohlke'spage安装了适用于Windows64位版本的Cython0.15.1|.基本上,来自here的答案和here不是我的选择,因为我确实需要Python64位版本来处理更大的内存。另外,因为我正在尝试使用MicrosoftSDKfor.NET4进行编译,我不能使用后一种解决方案中的方法。我尝试了这些步骤here并观察到绿色窗口,但编译现在抛出cannotfindvcvarsall.bat错误。以下是我尝试的命令序列:C:\>cd"Progra

python - 即使在编辑 PATH、在 distutils 中创建文件、删除所有 -mno-cygwin 实例后,也无法让 Cython 找到 MinGW gcc 编译器

我试图让cython意识到我在MinGW32位中有一个c编译器,我已经尝试了我在网上找到的所有内容,但它仍然无法正常工作。我正在运行Windows7Professional64位。这是我尝试过的:(1)我有Python2.7,我刚刚安装了带有选项gcc和g++以及一些其他选项的MinGW(2)我编辑了PATH环境变量,使其包含C:\MinGW\bin;C:\MinGW\MSYS\1.0\local\bin;C:\MinGW\MSYS\1.0\bin(3)我通过创建一个名为的文件告诉Python使用MinGW作为默认编译器C:\Python27\Lib\distutils\distuti

python - Cython 安装问题

我得到了Cython0.15并尝试像这样安装它pythonsetup.pyinstall我明白了:runninginstallrunningbuildrunningbuild_pyrunningbuild_extbuilding'Cython.Plex.Scanners'extensionerror:Unabletofindvcvarsall.bat这是什么意思?我有MicorsoftVisualStudio2008和WindowsSDK。使用Windows7,python2.6 最佳答案 我没有直接回答你的问题,但我强烈建议给这个