当前位置: 首页 > news >正文

RootSIFT的目标定位,opencvsharp。

首先截取匹配模板,然后使用rootsift特征匹配,最后定位目标。

对于微弱变化,还是能够识别定位的,对于传统算法来说已经不错了。

目标定位效果:

 使用的模板图片。

using OpenCvSharp;
using OpenCvSharp.Features2D;using Point = OpenCvSharp.Point;namespace WinFormsApp8
{public partial class Form1 : Form{public Form1(){InitializeComponent();}// 转换为RootSIFT描述子static void ConvertToRootSIFT(Mat descriptors){// L1归一化for (int i = 0; i < descriptors.Rows; i++){var row = descriptors.Row(i);double sum = Cv2.Norm(row, NormTypes.L1);row /= sum;}// 平方根处理Cv2.Sqrt(descriptors, descriptors);}// 特征匹配static List<DMatch> MatchFeatures(Mat queryDescriptors, Mat sceneDescriptors){var matcher = new BFMatcher(NormTypes.L2);var matches = matcher.KnnMatch(queryDescriptors, sceneDescriptors, 2);// 应用比率测试var goodMatches = new List<DMatch>();foreach (var match in matches){if (match[0].Distance < 0.75 * match[1].Distance){goodMatches.Add(match[0]);}}return goodMatches;}// 绘制结果static void DrawResult(Mat image, RotatedRect rect){// 绘制旋转矩形Point2f[] vertices = rect.Points();for (int i = 0; i < 4; i++){Cv2.Line(image, (Point)vertices[i], (Point)vertices[(i + 1) % 4],new Scalar(0, 255, 0), 3);}// 绘制矩形中心Cv2.Circle(image, (Point)rect.Center, 5, new Scalar(0, 0, 255), -1);}private void button1_Click(object sender, EventArgs e){try{Mat queryImage = Cv2.ImRead("2.bmp", ImreadModes.Color);using var queryGray = new Mat();Cv2.CvtColor(queryImage, queryGray, ColorConversionCodes.BGR2GRAY);using var sceneImage = new Mat(Environment.CurrentDirectory + "\\s.bmp", ImreadModes.Color);if (queryImage.Empty() || sceneImage.Empty()){Console.WriteLine("无法加载图像!");return;}// 转换为灰度图using var sceneGray = new Mat();Cv2.CvtColor(sceneImage, sceneGray, ColorConversionCodes.BGR2GRAY);// 初始化SIFT检测器var sift = SIFT.Create();// 检测关键点和计算描述子KeyPoint[] queryKeypoints, sceneKeypoints;Mat queryDescriptors = new Mat(), sceneDescriptors = new Mat();sift.DetectAndCompute(queryGray, null, out queryKeypoints, queryDescriptors);sift.DetectAndCompute(sceneGray, null, out sceneKeypoints, sceneDescriptors);// 转换为RootSIFT描述子ConvertToRootSIFT(queryDescriptors);ConvertToRootSIFT(sceneDescriptors);// 特征匹配var matches = MatchFeatures(queryDescriptors, sceneDescriptors);// 获取匹配点对var queryPoints = matches.Select(m => queryKeypoints[m.QueryIdx].Pt).ToArray();var scenePoints = matches.Select(m => sceneKeypoints[m.TrainIdx].Pt).ToArray();if (queryPoints.Length >= 8 && scenePoints.Length >= 8)//这里数字可以改{// 计算单应性矩阵var homography = Cv2.FindHomography(InputArray.Create(queryPoints),InputArray.Create(scenePoints),HomographyMethods.Ransac, 5.0);// 获取查询图像的四个角点var queryCorners = new Point2f[]{new Point2f(0, 0),new Point2f(queryImage.Cols, 0),new Point2f(queryImage.Cols, queryImage.Rows),new Point2f(0, queryImage.Rows)};// 变换到场景图像中var sceneCorners = Cv2.PerspectiveTransform(queryCorners, homography);// 计算最小外接矩形var minRect = Cv2.MinAreaRect(sceneCorners);// 绘制结果DrawResult(sceneImage, minRect);// 显示结果// 转换为轴对齐矩形// Rect boundingRect = Cv2.BoundingRect(minRect.Points().Select(p => new Point((int)p.X, (int)p.Y)).ToArray());Cv2.ImShow("pic", sceneImage);Cv2.WaitKey(0);}else{MessageBox.Show("没有足够的匹配点来计算变换矩阵");}}catch (Exception ex){MessageBox.Show(ex.Message);}}}
}

【免费】RootSIFT的目标定位,opencvsharp资源-CSDN文库https://download.csdn.net/download/vokxchh/90968508

相关文章:

  • DAY 25 异常处理
  • 基于贝叶斯网络构建结构方程_TomatoSCI分析日记
  • 【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
  • cookie session和token的区别
  • 一键搭建 WordPress + MySQL + phpMyAdmin 环境(支持 PHP 版本选择 自定义配置)
  • Python Flask文件处理与异常处理实战指南
  • 附加模块--Qt Shader Tools功能及架构解析
  • 技术栈Etcd的介绍和使用
  • Python 包管理器 uv 介绍
  • LeetCode面试经典150题—合并两个有序数组—LeetCode88
  • 实验四:图像灰度处理
  • LLMs之Structured Output:vLLM 结构化输出指南—从约束生成到自动解析与高效实现
  • 信号与传输介质
  • 基于fpga的疲劳驾驶检测
  • 06. C#入门系列【自定义类型】:从青铜到王者的进阶之路
  • 【LeetCode 热题100】字符串 DP 三连:最长回文子串、最长公共子序列 编辑距离(力扣5 / 1143/ )(Go语言版)
  • 【量化】策略交易 - 均线策略(Moving Average Strategy)- 代码增强版本
  • 整数的字典序怎么算
  • AUTOSAR实战教程--DoIP_02_诊断链路建立流程
  • 使用vs2022中自带的sqlserver,并在docker中安装mssql-server 并配置相关信息
  • 网站开发人员岗位/哈尔滨网站建设
  • 装饰公司怎样做网站/无锡seo培训
  • 做快递网站制作/网站优化靠谱seo
  • 石家庄网站建设备案/网络营销软件条件
  • 企业网站源码库/怎么提交百度收录
  • 徐州手机网站制作/搜索引擎营销sem包括