surf = cv.xfeatures2d.SURF_create(400) python运行报错 cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv_contrib\modules\xfeatures2d\src\surf.cpp:1028: error: (-213:The function/feature is not implemented) This algorithm i
时间: 2023-07-21 17:41:34 浏览: 255
这个错误通常是由于你的 OpenCV 版本不支持 SURF 算法引起的。在 OpenCV 4.x 版本中,SURF 算法已经被移动到了 opencv-contrib-python 包中。因此,你需要先安装 opencv-contrib-python 包,然后才能使用 SURF 算法。你可以使用以下命令在终端中安装:
```
pip install opencv-contrib-python
```
如果你已经安装了 opencv-contrib-python 包,但仍然出现此错误,请确保你的 OpenCV 版本正确,并且已正确安装 opencv-contrib-python 包。如果问题仍然存在,请尝试使用其他算法或特征,例如 ORB 或 AKAZE。这些实现是开源的,不受专利限制,因此在 OpenCV 4.x版本中始终可用。
```
import cv2 as cv
# Create ORB object
orb = cv.ORB_create()
# Create AKAZE object
akaze = cv.AKAZE_create()
```
如果问题仍然存在,请提供更多的代码和错误信息,以便我能够更好地帮助你解决问题。
相关问题
cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv_contrib\modules\xfeatures2d\src\surf.cpp:1028: 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 'cv::xfeatures2d::SURF::create'
您遇到的错误是由于使用的是不包含受专利保护的算法的 OpenCV 配置导致的。在默认情况下,OpenCV 不包含受专利保护的算法,例如 SURF。要解决此问题,您需要重新构建 OpenCV 库并启用 OPENCV_ENABLE_NONFREE CMake 选项。这将启用受专利保护的算法。请按照以下步骤操作:
1. 下载 OpenCV 源代码并解压缩。
2. 进入解压后的 OpenCV 目录。
3. 创建一个新的目录(例如 build)作为构建目录。
4. 在构建目录中运行 CMake 命令,启用 OPENCV_ENABLE_NONFREE 选项:
```
cmake -DOPENCV_ENABLE_NONFREE=ON ..
```
5. 运行 make 命令来构建 OpenCV 库:
```
make
```
6. 构建完成后,您可以将生成的库文件链接到您的项目中,并重新运行您的代码。
请注意,启用 OPENCV_ENABLE_NONFREE 选项可能需要满足一些法律和许可要求。在使用之前,请确保您了解并遵守适用的法律和许可协议。
阅读全文