2015-09-10 40 views
1

OpenCV的3.0現在使用T-API(透明API),請參閱:Python和上OpenCV的T-API

https://github.com/Itseez/opencv/wiki/Opencv3

它並不需要指定cv::ocl::Cannycv::gpu::Canny等; cv::Canny只適用於CPU和GPU。

,這是一個例子:

http://www.learnopencv.com/opencv-transparent-api/

我的問題是:

這適用於OpenCV的使用Python?任何人都可以給我一個例子嗎?

+1

我已經張貼同樣的問題在不久前。你可以在這裏看到它:http://stackoverflow.com/questions/31990646/using-opencl-accelerated-functions-with-opencv3-in-python/32052464#32052464 – Arqu

回答

3

在C++中使用的方法的OpenCL實現 - 你應該通過UMat代替Mat,當你從Python的調用方法與numpy的陣列或如此 - 你有效地與Mat作爲參數調用它。

UMat自從OpenCV 3.2以來被用於Python綁定。現在你可以通過cv2.UMat(someNumpyMat)來像在C++中一樣工作。

例子:

ps, descs_umat = orb.detectAndCompute(cv2.UMat(img), None) 
descs = descs_umat.get() 
matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) 
res = matcher.match(descs_umat, descs_umat) 
+0

我也更新了LearnOpenCV的內容來反映這種變化。 –