python-3.x - PyCharm:为 SIFT、SURF 等操作安装非免费 OpenCV 模块
问题描述
我想使用 SIFT、SURF 等功能。我在具有 OpenCV 3.4.1 并使用 PyCharm 作为 IDE 的虚拟机上使用 Ubuntu 16.04。
我可以打开 Pycharm,创建一个项目,转到文件-设置-项目解释器并下载我需要的模块。我已经下载了 opencv-python 和 opencv-contrib-python。
但我仍然无法使用上述功能。
请帮忙。谢谢。
解决方案
在 OpenCV 3 中,非自由模块,即SIFT 和 SURF,它们各自的创建者已获得专利,已从默认的 OpenCV 安装中移出并进入opencv_contrib包。默认情况下不安装opencv_contrib中的实现,您需要在编译和安装 OpenCV 时显式启用它们以获得对它们的访问权限。
要访问 OpenCV 2.4.X 中的原始 SIFT 和 SURF 实现(默认安装这些实现的版本),您需要从 GitHub下载opencv和opencv_contrib存储库,然后从源代码编译和安装 OpenCV3。
尽管我很想为您提供执行此操作的步骤,但我想归功于一个在线可用的教程来代替它。所以,按照这个甜蜜的教程 - 在 Ubuntu 上安装 OpenCV 3.0 和 Python 3.4+,你应该能够使用这些实现。此外,我建议查看ORB,它是 SIFT 和 SURF 的更快、免费的替代品,但不确定它是否能满足您的目的。
如果您真的不想使用终端,请打开一个新项目,转到 ->
设置 -> 项目 -> 项目解释器 -> +
通过搜索添加您想要的模块,您应该能够使用它们。
推荐阅读
- python - 如何从 html 表单 whichs value={{ something.id }} 在 django 中保存数据
- google-play - 如何找出App中HostnameVerifier接口的不安全实现?
- react-native - React Native Picker 项目计数
- python - tortoise.exceptions.OperationalError:列
关系的 不存在错误 - c# - C# 如何使用 Telegram API(不是 Bot API)从频道/联系人获取消息
- reactjs - 我应该将其保存在同一个用户集合中还是创建另一个集合?
- angular - 如何在 Angular 8 中保存表格的分页、排序、搜索状态?我正在使用 angular2-datatable
- scala - 如何替换通用匿名函数?
- flutter - 在 Tap Flutter 之后 setState 没有更新
- javascript - 通过javascript按下按钮时如何恢复textarea的原始高度?