mac opencv-python部署测试

    xiaoxiao2024-10-19  83

    背景:

    最近在看python的图像处理sift等算法:https://blog.csdn.net/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脚本,就没有报错了

    最新回复(0)