使用opencv中匹配点对的坐标提取方式
作者:仙女阳 发布时间:2022-12-02 00:32:54
标签:opencv,匹配点,坐标,提取
在opencv中,特征检测、描述、匹配都有集成的函数。vector<DMatch> bestMatches;用来存储得到的匹配点对。那么如何提取出其中的坐标呢?
int index1, index2;
for (int i = 0; i < bestMatches.size(); i++)//将匹配的特征点坐标赋给point
{
index1 = bestMatches.at(i).queryIdx;
index2 = bestMatches.at(i).trainIdx;
cout << keyImg1.at(index1).pt.x << " "
<< keyImg1.at(index1).pt.y << " "
<< keyImg2.at(index2).pt.x << " "
<< keyImg2.at(index2).pt.y << endl;
}
补充知识:OpenCV 如何获取一个连通域中的所有坐标点
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
int main(int argc, char* argv[])
{
IplImage* img;
img = cvLoadImage("D:\\OOTT\\WEEK5\\2.png");
IplImage* gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
cvCvtColor(img,gray,CV_BGR2GRAY);
cvThreshold(gray,gray,128,255,CV_THRESH_BINARY);
CvMemStorage* storage = cvCreateMemStorage();
CvSeq * first_contour = NULL;
int Ncontour = cvFindContours(gray,storage,&first_contour,sizeof(CvContour),CV_RETR_LIST);
//Ncontour为cvFindContours函数返回的轮廓个数
for(CvSeq* c = first_contour;c!= NULL;c=c->h_next)
{
// cvDrawContours(img,c,cvScalar(255,255,0),cvScalar(255,0,255),0,2,8);
cvNamedWindow("contours",CV_WINDOW_AUTOSIZE);
// cvShowImage("contours",img);
for(int k = 0;k <c->total;++k)
{
CvPoint* p = CV_GET_SEQ_ELEM(CvPoint,c,k);
printf("(%d,%d)\n",p->x,p->y);
}
CvRect rect;
rect = cvBoundingRect(c,0);
cvFloodFill(img,cvPoint(img->width/2,img->height/2),cvScalar(255,255,255),cvScalar(20),cvScalar(20),NULL,4,NULL);
cvShowImage("contours",img);
int Num[500][500];
for (int i=0;i<(img->height-5);i++)
for (int j=0;j<(img->width-5);j++)
{
CvScalar S0;
S0=cvGet2D(img,i,j);
if(S0.val[0] == 255)
Num[i][j]=1;
else
Num[i][j]=0;
printf("(%d,%d)\n",i,j);
}
}
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&gray);
cvDestroyWindow("contours");
return 0;
}
来源:https://blog.csdn.net/wangyang20170901/article/details/82456347


猜你喜欢
- 一般调试程序的时候都比较倾向print,利用直接打印的方法作出判断,但是print只能打印出结果,对类型无法作出判断。例如:复制代码a =
- 分享mysql 5.7 docker 主从复制架构搭建教程,供大家参考,具体内容如下环境版本:MySQL : 5.7.13Doc
- 本文实例讲述了Python多继承原理与用法。分享给大家供大家参考,具体如下:python中使用多继承,会涉及到查找顺序(MRO)、重复调用(
- var obj=document.getElementById("id");得到的是dom对象,对该对象进行操作的时候使
- 因为虽然名字很陌生,但我们每天都在用,每天都有无数潜在的坑被埋下。包括我本人也犯过同样的错误,当时代码已经合并并发布了,当我意识到出了什么问
- 在Python中,split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法
- 我们了解到gin可用通过类似DefaultQuery或DefaultPostForm等方法获取到前端提交过来的参数。参数不多的情况下也很好用
- 本文实例为大家分享了three.js 全景重力感应的具体代码,供大家参考,具体内容如下实现three.js 全景图 demo使用three.
- 简介testify可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了。testify提供了很多方便的函数帮助我们做as
- SQL概述SQL背景知识1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业在
- 1、汉语分词的由来使用ASP开发的中小企业的网站,对于站内搜索,往往只是简单的通过SQL语句匹配数据库。对于比较短的词语搜索,这个方法是有效
- 树,因其清晰明了的展现形式而被广泛的使用日常的开发过程中我们需要经常与“树”打交道,例如公司的组织架构树、服务器的项目归属树,管理后台侧边树
- 使用 Rxjs,对于初学者来说,当我们处理 observables 错误的时候容易疑惑,因为我们会考虑使用 try-catch 方式捕获。但
- 最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁。其中ndarray如何进行数值筛选,总结了几种方法。1.按某些固定值
- 昨天晚上才发现已经出了jQuery的1.3版本,于是下载下来,把原来一个兄弟翻译的1.2.6的文档移植到了1.3中,点击这里可
- 一、简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性。
- 2008年,对于JavaScript来说是非常振奋人心的一年,很多高人加入到JavaScript和Web开发的阵营中来,浏览器厂商在技术上互
- W3C 发布 XPath 1.0 规范是在 1999 年,那时我还正在备战高考,不料十年后,我才开始学习XPath,落后的差距不是一般的大(
- 本文实例讲述了Python3访问并下载网页内容的方法。分享给大家供大家参考。具体如下:#!/usr/local/bin/python3.2i
- 项目用run dev build 打包后,发现很多图片都不显示,在本地是没有问题的啊!找原因发现通过webpack+vuecli默认打包的c