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

本文介绍在Ubuntu环境下,如何使用Python调用包含OpenCV Mat类型的C++库,具体步骤包括生成so共享库文件并将其与Python代码整合,通过实例演示了在图片上绘制圆圈的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

重新运行,运行结果,在原图上画出圆圈:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值