2017-03-02 45 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的數據可以直接以某種方式使用......可能是的。

相關問題