Python 3.x OpenCV xfeatures2d_SURF-213:未实现该功能/特性

Python 3.x OpenCV xfeatures2d_SURF-213:未实现该功能/特性,python-3.x,opencv,Python 3.x,Opencv,我在Windows 10上安装了python3,并通过pip添加了OpenCV和OpenCV contrib。对于xfeatures_2d,它给出了以下错误 我可以使用pip添加该选项吗 detector = cv.xfeatures2d_SURF.create(hessianThreshold=minHessian) cv2.error:OpenCV(3.4.3)C:\projects\OpenCV python\OpenCV\u contrib\modules\xfeatures2d\sr

我在Windows 10上安装了python3,并通过pip添加了OpenCV和OpenCV contrib。对于xfeatures_2d,它给出了以下错误

我可以使用pip添加该选项吗

detector = cv.xfeatures2d_SURF.create(hessianThreshold=minHessian)

cv2.error:OpenCV(3.4.3)C:\projects\OpenCV python\OpenCV\u contrib\modules\xfeatures2d\src\surf.cpp:1016:error:(-213:未实现函数/功能)此算法已获得专利,不包含在此配置中;设置OPENCV_ENABLE_NONFREE CMake选项并在函数“cv::xfeatures2d::SURF::create”中重建库

如注释中所述,您不能再通过
pip
获取非自由模块。PyPI包
opencv-python-contrib
用于“错误地”包含非免费包,如SIFT。这是最近“修复”的,因此它们不再使用较新版本的
opencv-python-contrib
安装。从:

这些算法以前被错误地包括在内,因为它们 在上游没有得到适当的保护 OPENCV_启用_非自由标志

我不是律师。我不确定我是否能重新分配这些 算法

编辑:请参阅:


这个解决方案对我有效

pip install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com opencv-contrib-python==3.4.2.17

来源:

很遗憾,pip无法直接添加此函数。此选项是一个编译选项,如果您确实有编译自己版本的库的习惯,那么很快就可以配置。否则,您可以尝试像anaconda这样的东西,其中包含多个版本的opencv,大多数都是用您缺少的标志编译的。这与contrib无关。在过去的五年中,我每年编译三到四次OpenCV,并且我每天都使用C++和Python。我使用常规模块和contrib模块。我知道那个标志,我知道你不能用pip来修复它。@John_Sharp1318在你添加之前刚刚删除了我的评论---我没有读OP的错误消息,lol。我认为语法是错误的(应该是
xfeatures2d.SURF_create()
),但你是对的。别担心:)。我知道发生这样的事情总是很无聊。我强烈建议你使用巨蟒,如果你能减少很多这样的负担的话。我把这变成了另一个问题的实际答案@约翰·夏普1318如果你回答了这个问题,我会把它标记为一个复制品P