Oz *_*ano 5 python ubuntu opencv sift python-2.7
我试图通过Ubuntu的shell运行最简单的opencv SIFT代码,没有运气
我收到一个错误:
AttributeError:'module'对象没有属性'SURF'
代码:
import cv2
cv2.SIFT()
Run Code Online (Sandbox Code Playgroud)
我的配置:
'scaleAdd','segmentMotion','sepFilter2D','setIdentity','setMouseCallback','setTrackbarPos','setUseOptimized','setWindowProperty','solve','solveCubic','solvePnP','solvePnPRansac','solvePoly ','sort','sortIdx','split','sqrt','startWindowThread','stereoCalibrate','stereoRectify','stereoRectifyUncalibrated','subtract','sumElems'
小智 6
这让我发疯了,但我没有考虑所有其他建议,结果您现在只需两个终端命令即可获得 SIFT 和 SURF!
确保您的计算机上没有其他 opencv ...
pip uninstall opencv-python
Run Code Online (Sandbox Code Playgroud)然后获取贡献版本(有 SIFT 和 SURF + 其他)...
pip install opencv-contrib-python
Run Code Online (Sandbox Code Playgroud)它应该安装,但请注意名称略有不同。
import cv2
sift = cv2.xfeatures2d.SIFT_create()
Run Code Online (Sandbox Code Playgroud)
!!!pip pip 欢呼!!!(这只是一个双关语,不是代码的一部分)
import cv2
sift = cv2.SIFT()
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 opencv 3.0 或更高版本,此代码将不起作用。此代码的替代方法是
sift = cv2.xfeatures2d.SIFT_create()
(Only works if you have installed opencv-contrib-python library )
Run Code Online (Sandbox Code Playgroud)
现在再一次,如果你有一个 opencv-contrib-python 版本 > 3.4 比它不会使用不同的错误
error: OpenCV(4.1.0) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implementation)这个算法是专利的并且被排除在此配置中;设置 OPENCV_ENABLE_NONFREE CMake 选项并在函数 'cv::xfeatures2d::SIFT::create' 中重建库
对此的最佳解决方案是:
**step 1: pip uninstall opencv-python**
**step 2: pip install opencv-contrib-python==3.4.2.16**
Run Code Online (Sandbox Code Playgroud)
这对我有用。
[注意:如果您还没有使用 pip install opencv-python 安装 opencv,那么只需删除下载的库并按照上述说明进行操作]
这不是最顺利的方法,但它对我有用。
@Berak 向我解释说,正如您在我的问题的评论中所观察到的那样,SIFT 算法以及 FAST 算法已获得专利,这意味着它们不是常规 opencv 安装的一部分。
因此,我搜索了一个包含这一切的 python 发行版 - 我找到了一个。所以,我实际上并没有解决问题,正如 @Berak 所建议的那样,或者我使用Python(x,y)绕过了它
谢谢您的帮助,
厄兹拉德
归档时间: |
|
查看次数: |
10785 次 |
最近记录: |