2017-03-02 48 views
1

我需要使用ArUco C++ library作为我的主要编程语言是Python的项目的一部分。我无法在Anaconda环境中的我的系统上安装python wrapper for ArUco。它只是抛出错误。所以我想我可以用C++在OpenCV中安装和编写代码,并且可以将结果传输到我的主Python代码中。可能吗?如何在Ubuntu 16.04上的Anaconda环境中将OpenCV C++代码与python代码集成?

+0

是的,你可以用cffi http://cffi.readthedocs.io/en/latest/来做到这一点,你也可以制作一个C DLL,并在python中使用它与内置的ctypes库https:// docs。 python.org/3/library/ctypes.html – ballsatballsdotballs

回答

1

您是否要检测ArUco制造商?如果是这样,您可以尝试使用包含ArUco marker detection (aruco module)模块的contrib模块的OpenCV 3.2。这个Aruco in opencv网页有python代码示例。

对于Windows 32位或64位平台上的Python 3.5或3.6,您可以从site获得OpenCV3.2contribcontrib预构建二进制文件。它可以通过pip install {filename}.whl安装到Anaconda,因为conda install不支持whl文件。

+0

谢谢。我在Ubuntu 16.04上使用OpenCV 3.1和Python 3.5进行了尝试。我得到这个错误:'AttributeError:module'cv2.aruco'没有属性'getPredefinedDictionary'' – user5311361

+0

还有一个问题:我可以在OpenCV3.1的现有环境中安装OpenCV 3.2吗? – user5311361

+0

在安装3.2之前卸载OpenCV 3.1以避免任何问题会更好。如果您通过conda安装3.1,则不需要时间,并且可以继续前进。 – thewaywewere

0

你也可以使用boost python轻松地在C++中编写python函数!

http://www.boost.org/doc/libs/1_63_0/libs/python/doc/html/index.html

// non-compiling example: 
namespace py = boost::python; 
// you have access to all python builtins using the py:: namespace 
py::list create_list(py::dict dictionary, py::tuple tuple); 

为了很好地传递OpenCV的数据/蟒蛇,有numpy的支持:

http://www.boost.org/doc/libs/1_63_0/libs/python/doc/html/numpy/tutorial/ndarray.html

// non-compiling example: 
namespace np = boost::python::numpy; 
np::ndarray modify_image(np::ndarray image); 

我不知道是否OpenCV的数据可以直接以某种方式使用......可能是的。

相关问题