python opecv3.4.5 contirb版本 无法使用sift surf等算法

没有配置opencv_contrib,需要导入opencv_contrib

解决方法是安装opencv_contrib,pip install opencv-contrib-python,但这种方法不能解决该问题

我的解决方法是:先卸载opencv,再将opencv版本改为3.4.2。【该版本的opencv截至2019.3有效,网传的其他低版本基本都已经无法从pip直接安装

 

pip install opencv-contrib-python==3.4.2.16

pip install opencv-contrib-python==3.4.2.16

百度后找到如下博客windows系统下Python安装或升级模块报错:PermissionError: [WinError 5] 拒绝访问。的解决办法.看到在pip install后添加--user参数就解决了问题。于是我想到在安装python-contrib-opencv时添加--user参数。运行pip install --user python-contrib-opencv安装成功
原文:https://blog.csdn.net/liuweiyuxiang/article/details/80264081 

 

在寻找合适版本的过程中经历了以下问题:(环境:anaconda自带 python3.7+新虚拟环境python3.7 无其他额外的版本,默认python为虚拟环境的)

anaconda 虚拟环境下无法读取到pip安装的包

pycharm下安装的包也无法在anaconda下显示

解决办法:修改默认的pip路径即可。

包括修改pycharm的pip为虚拟环境的pip,方法如图:

即当时配置pycharm的时候没有添加scripts,导致其使用的pip不是虚拟环境的pip

其实简单点也可以这样:直接打开anaconda prompt 切换至虚拟环境,在此环境下使用pip,绝对稳妥。

3.在测试sift的时候用了这个demo

import cv2
import numpy as np

imgname1 ="d:/lena.jpg"



im = cv2.imread(imgname1)
if im is not None:
    im = cv2.resize(im,(768,512))
    cv2.imshow('0',im)
    cv2.waitKey()
    gray=im
    # gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    #opencv 读取图片默认BGR
    # cv2.imshow('1',gray)
    # cv2.waitKey(0)
    sift = cv2.xfeatures2d.SIFT_create()
    keypoints,descriptors = sift.detectAndCompute(gray,None)
    img = cv2.drawKeypoints(gray,keypoints,im)
    cv2.imshow('keypoints',img)
    cv2.waitKey()
    # cv2.destroyAllWindows()
else:
    print('no pic')

然后发现显示了原图后没有后续了,注释掉第一个cv2.waitkey()后正常显示 图keypoints了,可能是代码有bug

原文地址:https://www.cnblogs.com/neo3301/p/13169850.html