opencv调用扩展库SIFT算法

最近有个图像处理的任务,是要提取图像中的特征点。在OPENCV库中,提供了很多的特征提取库,一些基础的算法在feature2d库中就有,但是有些算法在这个核心库中没有,需要在扩展库xfeatrue2d中才有,比如我需要用的SIFT。

这一篇先不说SIFT的原理,说说如何用上opencv中的这个SIFT。

如果有直接想使用的,我上传了我自己编译好的一些LIB包,有需要的朋友可以自行下载使用:

https://download.csdn.net/download/pcgamer/89998105

环境

  • opencv版本:4.2.0
  • 开发语言:C++
  • 操作系统:windows 10
  • 编译IDE:VS 2015
  • 开发IDE:VS 2022
  • cmake:3.28

下载

SIFT算法在opencv4.2版本的时候,不在核心库中,而且好像是因为版权的问题,需要单独编译,也就是不能直接下载lib库直接使用,必须手动从源码编译。

  • opencv4.2.0核心库源码可以直接从opencv官网上下载:

编译

cmake

  • CMAKE的几个配置:
    BUILD_OPENEXR需要勾选。
    BUILD_EXR_PATH需要填写上面的opencv_contrib中的moudules

注意,一定要勾选NONFREE这个勾选框,因为在4.2.0这个版本中,如果不勾选的话,打出来的xfeature2d的lib或者dll中是没有这个函数的实现的。

代码调用

我的调用方式是通过核心库的opencv_world全量库,配合xfeature2d这些一个一个的扩展库进行使用。

复制代码
#include <opencv2/xfeatures2d.hpp>
#include "opencv2/opencv.hpp"

int main(int argc, char* argv[]) {
	fs::path basePath = "test.png";

	cv::Mat img = cv::imread(basePath.string());

	if (img.channels() == 3)
	{
		cv::cvtColor(img, img, cv::COLOR_RGB2GRAY);
	}


	cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create(0, 3, 0.04, 10, 1.6);
	// 检测关键点
	std::vector<cv::KeyPoint> keypoints;
	sift->detect(img, keypoints);

	// 在图像上绘制关键点
	cv::Mat img_with_keypoints;
	cv::drawKeypoints(img, keypoints, img_with_keypoints, cv::Scalar::all(-1), cv::DrawMatchesFlags::DEFAULT);


	// 显示结果
	cv::resize(img_with_keypoints, img_with_keypoints, cv::Size(img_with_keypoints.cols / 2, img_with_keypoints.rows / 2));
	cv::imshow("Keypoints", img_with_keypoints);
	cv::waitKey(0);
	cv::destroyAllWindows();
}
相关推荐
zavoryn18 小时前
大模型入门:面试必会 RoPE,从位置编码到旋转位置嵌入
算法·面试
05候补工程师18 小时前
【408高分笔记】数据结构冲刺:二叉树遍历性质、特殊形态与栈的跨界联动秒杀技巧
数据结构·经验分享·笔记·考研·算法
菜菜的顾清寒18 小时前
力扣HOT100(36)二分查找-搜索插入位置
数据结构·算法·leetcode
我材不敲代码18 小时前
【OpenCV零基础实战】键盘交互、像素位运算、通道离合、色彩转换与智能抠像
人工智能·opencv·计算机外设
yubo050918 小时前
计算机视觉第二课:3 个核心操作(灰度图 + 模糊 + 边缘检测)
人工智能·opencv·计算机视觉
weixin_4684668518 小时前
PyTorch 与 TensorFlow 实战选型与应用场景指南
人工智能·pytorch·深度学习·算法·机器学习·tensorflow·深度学习框架
x_xbx18 小时前
LeetCode:647. 回文子串
算法·leetcode·职场和发展
Chen_harmony18 小时前
二十二、动态内存管理
c语言·数据结构·算法
Black蜡笔小新18 小时前
制造业AI质检工作站/自动化AI算法训练服务器DLTM企业AI算力工作站筑牢制造业品质防线
人工智能·算法·自动化