我用OpenCV编写了C++代码,我把C++代码转换成“DLL”,我需要调用Python中这个DLL的方法,它接收^ {< CD1>}作为数据类型。但我在这里犯了错误。下面是C++代码和Python代码的示例。在
在Google上,我发现我们需要使用Boost库,但是不知道如何将^ {< CD2>}转换成C++ +{<强> C++ DLL代码:< /强>
DLLEXPORT int FromPython ( cv :: Mat InputSrc) {
imshow ( "FromPython", InputSrc );
return 0;
}
Python代码
^{pr2}$
您可以看看opencvpython包装器。在modules/python/src2/cv2.cpp(取决于版本,我使用opencv2.4)中的OpenCV文件夹中有一些名为pyopencv_的函数供OpenCV python包装器使用。其中一个用于将PyObject转换为cv::Mat。“FromPython”函数需要获取PyObject作为输入。我个人使用Booo::Python::对象将Python OpenCV函数返回的NUMPY数组传递给C++函数/类。你应该在C++中得到这样的东西:
那么您可以访问cv::Mat的函数如下所示:
^{pr2}$要从Python访问此函数,需要将其包装在BOOST_Python_模块中。例如:
然后在Python中,可以从Boost包装器创建的Python模块调用函数。我使用Linux,所以我编译上面的代码来获得一个动态库(.so)。我不知道它在Windows中有多大的不同。我可以通过以下方式从动态库访问模块:
<>你可以避免使用Boost,但我没有尝试其他方法,我发现Boost便于包装C++类。 注意:我没有测试这段代码,因为我从一个项目中剥离了它,但我希望它仍然有用。在相关问题 更多 >
编程相关推荐