std::vector <cv::Point> VectorPoints

说明:首先定义一个Point(即Point2i---二维整型的点)类型的变量VectorPoints,这就是我们创建的用来存储Point类型的点的容器啦。<cv::Point>表示容器中所装的数据的类型,double啊,int啊,各种都可以。之后,博主用二重循环给我们的容器装数据:定义一个我们要装的数据的类型的变量(这里叫myPoint),给这个变量赋值,然后调用vector变量的push_back函数(参数即为该类型数据)。我们就把这些数据装入容器了。

#include <iostream>
#include <string>
#include <vector>
#include "opencv2/highgui/highgui.hpp" int main()
{ int i, j;
std::vector <cv::Point> VectorPoints;
for (i = 0; i<5; i++)
for (j = 0; j<5; j++)
{
cv::Point myPoint = cv::Point(i, j);
VectorPoints.push_back(myPoint);
} for (i = 0; i<VectorPoints.size(); i++)
std::cout << VectorPoints.at(i) << std::endl;
system("pause");
return 0;
}

我们可以用cout输出数据来看看。用at我们可以轻易地访问容器中的第i个元素(数据)。VectorPoints.at(i)有两个变量x,y即为我们刚才复制的i,j。VectorPoints.at(i).x和VectorPoints.at(i).y直接可以得到某个Point类型数据的x、y元素。

函数的具体使用可参考:

https://zhuanlan.zhihu.com/p/45208774

https://blog.csdn.net/msdnwolaile/article/details/52708144

说明:在OpenCV的绘制特征点和匹配点绘制及连线中,都反复地使用了KeyPoint这种数据类型,因此首先定义一个数据类型为KeyPoint的vector容器,名之keypoint_test。接着,我们给容器装数据:KeyPoint比之Pont多了些参数,头两个参数分别是float型,第三个是绘制点的大小,再后就都是用的默认参数,博主还没有深究,是对着下边的features2d.hpp中的东西对着打的(后四个参数:-1,0 ,0,-1)。之后,如法炮制地调用函数push_back,我们就得到了装载了数据的vector容器keypoint_test。接下来的绘制就简单了。Mat型变量读取图像,再定义一个Mat性变量mat_show用于绘制。最后调用drawKeypoints,参数分别是:原始图像,待绘制的数据keypoint_test,绘制所用的图像,任意颜色,ID号(同一幅图像相同)。这样简单几步就大功告成啦。;

opencv3.x.的cv2.drawKeypoints()函数主要五个参数:

image:也就是原始图片
keypoints:从原图中获得的关键点,这也是画图时所用到的数据
outputimage:输出              //可以是原始图片 
color:颜色设置,通过修改(b,g,r)的值,更改画笔的颜色,b=蓝色,g=绿色,r=红色。
flags:绘图功能的标识设置
flags的四个参数:

cv2.DRAW_MATCHES_FLAGS_DEFAULT:创建输出图像矩阵,使用现存的输出图像绘制匹配对和特征点,对每一个关键点只绘制中间点

cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不创建输出图像矩阵,而是在输出图像上绘制匹配对

cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:对每一个特征点绘制带大小和方向的关键点图形

cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:单点的特征点不被绘制

#include <iostream>
#include <string>
#include <vector>
#include "opencv2/highgui/highgui.hpp"
#include <opencv2/core/core.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp> using namespace cv;
using namespace std; int main()
{ vector<KeyPoint> keypoint_test;
KeyPoint mykeypoint = KeyPoint(, , , -, , , -);
keypoint_test.push_back(mykeypoint);
mykeypoint = KeyPoint(, , , -, , , -);
keypoint_test.push_back(mykeypoint);
mykeypoint = KeyPoint(, , , -, , , -);
keypoint_test.push_back(mykeypoint);
Mat mat_test = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\04.png");
Mat mat_show;
drawKeypoints(mat_test, keypoint_test, mat_show, Scalar::all(-), );
imshow("show", mat_test);
imshow("show2", mat_show); waitKey();
return ;
}

最新文章

  1. Linux 下复制(cp)目录时排除一个或者多个目录的方法
  2. 2016.9.13 JavaScript入门之六基础函数
  3. 用MySQL实现分页查询
  4. percona-xtrabackup备份mysql
  5. c#桌面小软件
  6. 分布式数据库hbase详解
  7. Cloudera Development Kit(CDK) 简介
  8. Tornado session 插件 pycket 定制时间和时间续租
  9. ①bootstrap引入
  10. 关于STM32CubeMX使用LL库设置PWM输出
  11. ajax方式下载文件
  12. MVC异步方法
  13. 学以致用二十七-----Centos7.5二进制安装mysql5.7.23
  14. 8bit数据 转换为 16bit数据的四种方法
  15. 以前的 Delphi版本
  16. SQL注入之Sqli-labs系列第五关和第六关(基于GET型的报错注入)
  17. Win7删除缓存垃圾文件
  18. Leetcode 746. Min Cost Climbing Stairs
  19. 2018-2019-2 网络对抗技术 20165219 Exp6 信息搜集与漏洞扫描
  20. 实现运行在独立线程池的调度功能,基于Spring和Annotation

热门文章

  1. 两张图搞清楚Eclipse上的Web项目目录
  2. 原创: idea 的maven 方式配置 开发javaWeb(idea+tomcat +maven
  3. ajax 携带参数传递 页面 查找
  4. 【学习笔记】B站-2019-NLP(自然语言处理)之 BERT 课程 -- 相关课程笔记
  5. Spring cloud微服务安全实战 最新完整教程
  6. nodejs 使用 body-parser 获取网页内容
  7. Ubuntu 系统连接到服务器
  8. javascript生成指定位数的随机数
  9. Vue(八)---组件(Component)
  10. LOJ #2831. 「JOISC 2018 Day 1」道路建设 线段树+Link-cut-tree