Usando las funciones aceleradas de OpenCL con OpenCV3 en Python

OpenCV3 presentó su T-API (API transparente) que le brinda al usuario la posibilidad de usar funciones que son aceleradas por GPU (u otro dispositivo habilitado para OpenCL), estoy luchando para encontrar la forma de aprovechar eso con Python.

Con C ++ hay llamadas como ocl::setUseOpenCL(true); que habilitan la aceleración de OpenCL cuando usas UMat lugar de objetos Mat . Sin embargo, no encontré documentación alguna para Python.

¿Alguien tiene algún código de ejemplo, enlaces o guías sobre cómo lograr la aceleración de OpenCL con OpenCV3 en Python?

ACTUALIZAR:

Después de seguir investigando, encontré esto en modules/core/include/opencv2/core/ocl.hpp :

 CV_EXPORTS_W bool haveOpenCL(); CV_EXPORTS_W bool useOpenCL(); CV_EXPORTS_W bool haveAmdBlas(); CV_EXPORTS_W bool haveAmdFft(); CV_EXPORTS_W void setUseOpenCL(bool flag); CV_EXPORTS_W void finish(); 

Lo que logré llamar desde Python:

 print(cv2.ocl.haveOpenCL()) cv2.ocl.setUseOpenCL(True) print(cv2.ocl.useOpenCL()) 

Y produce el siguiente resultado:

 True True 

Sin embargo, todavía funciona igual, supongo que todavía no uso OpenCL porque no uso UMat en Python.

Actualización de información

Para aquellos de ustedes que ven esto, OpenCL para OpenCV versión de python ya ha sido mejorado

a 6 oct 2016

Más información

Para obtener más información, puede echar un vistazo a este problema: Se implementó la compatibilidad con T-API python # 6078

De acuerdo con este problema, el soporte para esta función todavía no existe, pero está “en progreso”, actualizaré cuando haya más disponible.

La API transparente es compatible con OpenCV 3.2 y superior. Aquí hay un código de ejemplo.

 import cv2 img = cv2.UMat(cv2.imread("image.jpg", cv2.IMREAD_COLOR)) imgUMat = cv2.UMat(img) gray = cv2.cvtColor(imgUMat, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray, (7, 7), 1.5) gray = cv2.Canny(gray, 0, 50) cv2.imshow("edges", gray) cv2.waitKey(); 

Más detalles se pueden encontrar en OpenCV Transparent API