ubuntu下python调用含有opencv Mat类型的so文件的方法
ubuntu生成so文件的方法
参考我的这篇文章:Ubuntu生成so共享库的方法
生成的共享库文件名为libopencv_draw_circle.so
python调用so库文件
将libopencv_draw_circle.so文件python相同文件夹下
python调用代码:
#2019.12.30
#Leo Ma
import ctypes as C
import cv2
import numpy as np
so = C.cdll.LoadLibrary("./libopencv_draw_circle.so")
img = cv2.imread('./ROI0.png')
cv2.imshow('src',img)
cv2.waitKey(0)
(rows, cols) = (img.shape[0], img.shape[1])
ret_img = np.zeros(dtype=np.uint8, shape=(rows, cols, 3))
so.draw_circle(rows, cols, img.ctypes.data_as(C.POINTER(C.c_ubyte)), ret_img.ctypes.data_as(C.POINTER(C.c_ubyte)))
cv2.imshow("src with circle",ret_img)
cv2.waitKey(0)
运行结果:
运行时cv2.imshow()出现报错:
解决办法,Anaconda下重装opencv, 参考这篇文章
The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support
命令行下依次执行:
conda remove opencv
conda install -c menpo opencv
pip install --upgrade pip
pip install opencv-contrib-python
重新运行,运行结果,在原图上画出圆圈: