mac opencv-python部署测试

博客围绕Python图像处理SIFT算法展开,运行代码时遇到函数收费问题,可通过自己编译加载。作者在mac python3.7环境下,卸载pip3安装的opencv相关库,利用cmake参数编译生成python类库文件,重新运行脚本后不再报错。

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

背景:

最近在看python的图像处理sift等算法:https://blog.youkuaiyun.com/zhangziju/article/details/79754652

在运行如下代码时出现如下错误:

import cv2
import numpy as np

imgname1='/Users/zhangyugu/Documents/gakki101_1.png'
imgname2='/Users/zhangyugu/Documents/gakki101_2.png'

sift = cv2.xfeatures2d.SIFT_create()

img1 = cv2.imread(imgname1)
gray1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY) #灰度处理图像
kp1,des1 = sift.detectAndCompute(img1,None) #desc 是描述子

img2 = cv2.imread(imgname2)
img2=img2[3:-3] #将两个图片处理成一样大小
#原来的文章地址中没有原始图片,笔者自己进行了截取,并在代码中进行了处理。
gray2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
kp2,des2 = sift.detectAndCompute(img2,None)

hmerge = np.hstack((gray1,gray2)) #水平拼接
cv2.imshow("gray",hmerge)
cv2.waitKey(0)

#画出特征点,并显示为红色圆圈
img3=cv2.drawKeypoints(img1,kp1,img1,color=(255,0,255)) 
img4=cv2.drawKeypoints(img2,kp2,img2,color=(255,0,255))
hmerge=np.hstack((img3,img4)) #水平拼接
cv2.imshow("point",hmerge) #拼接显示为gray
cv2.waitKey(0)

#BFMatcher解决匹配
bf=cv2.BFMatcher()
matches = bf.knnMatch(des1,des2,k=2)
img5 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,flags=2)
cv2.imshow("BFMatch",img5)
cv2.waitKey(0)

#调整ratio
good = []
for m,n in matches:
    if m.distance < 0.75*n.distance:
        good.append([m])
img6 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,None,flags=2)
cv2.imshow("BFMatchGood",img6)
cv2.waitKey(0)

cv2.destroyAllWindows()
sift = cv2.xfeatures2d.SIFT_create()

cv2.error: OpenCV(4.1.0) /Users/travis/build/skvark/opencv-python/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1207: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'

意思是这个函数现在不免费了,但是仍然可以通过自己编译的方式加载进来

 

方法:

以下的环境是:mac python3.7

1 、当前目录为/Users/zhangyugu/Downloads/

git clone opencv https://github.com/opencv/opencv.git

git clone https://github.com/opencv/opencv_contrib.git

2、当前最新的分支是3.4

cd opencv_contrib

git checkout 3.4

cd ../opencv

git checkout 3.4

mkdir build

cd build

cmake .. 
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=/usr/local 
-DOPENCV_EXTRA_MODULES_PATH=/Users/zhangyugu/Downloads/opencv_contrib/modules 
-DOPENCV_ENABLE_NONFREE=true 
-DBUILD_opencv_python3=ON
-DPYTHON3_EXECUTABLE=/Library/Frameworks/Python.framework/Versions/3.7/bin/python3 
-DPYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/ 
-DPYTHON_LIBRARY=/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ 
-DPYTHON3_PACKAGES_PATH=/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/
-DPYTHON3_NUMPY_INCLUDE_DIRS=/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/core/include/ 
-DOPENCV_GENERATE_PKGCONFIG=ON 


make

make install

3、笔者在这其中踩了很多坑,pip3自己安装的opencv_python以及opencv_contrib_python最后都卸载了,

从这个cmake的参数可以看出opencv编译的过程中就生成了python类库文件。

4、重新运行原python脚本,就没有报错了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值