网络编程
位置:首页>> 网络编程>> Python编程>> 使用opencv中匹配点对的坐标提取方式

使用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 如何获取一个连通域中的所有坐标点

使用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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com