ubuntu下python调用含有opencv Mat类型的so文件的方法

ubuntu下python调用含有opencv Mat类型的so文件的方法

  • ubuntu生成so文件的方法
  • python调用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

重新运行,运行结果,在原图上画出圆圈:
ubuntu下python调用含有opencv Mat类型的so文件的方法_第1张图片

你可能感兴趣的:(Python爬虫)