std::vector<std::vector<cv::Point>> fillContour(const std::vector<std::vector<cv::Point>> & _contours)
{
// sort as x descent y descent.
std::vector<std::vector<cv::Point>> contours(_contours);
for(size_t i = 0; i<contours.size(); ++i)
{
std::vector<cv::Point> sub(contours[i]);
std::sort(sub.begin(), sub.end(), [&](cv::Point & A, cv::Point & B) {
if (A.x == B.x)
return A.y < B.y;
else
return A.x < B.x;
}); contours[i] = sub;
} // restore as pairs with same ys.
std::vector<std::vector<std::pair<cv::Point, cv::Point>>> contours_pair;
for (size_t i = 0; i < contours.size(); ++i)
{
std::vector<std::pair<cv::Point, cv::Point>> pairs; for (size_t j = 0; j < contours[i].size(); ++j)
{
// j==0
if (pairs.size() == 0)
{
pairs.push_back({ contours[i][j],contours[i][j] });
continue;
} // j>0
if (contours[i][j].x != pairs[pairs.size() - 1].first.x)
{
pairs.push_back({ contours[i][j],contours[i][j] });
continue;
} if (contours[i][j].x == pairs[pairs.size() - 1].first.x)
{
if (contours[i][j].y > pairs[pairs.size() - 1].second.y)
pairs[pairs.size() - 1].second = contours[i][j];
continue;
}
} contours_pair.push_back(pairs);
} // fill contour coordinates.
std::vector<std::vector< cv::Point>> fill_con;
for (auto pair_set : contours_pair)
{
std::vector<cv::Point> pointSet;
for (auto aPair : pair_set)
{
if (aPair.first == aPair.second)
{
pointSet.push_back(aPair.first); }
else
{
for (int i = aPair.first.y; i <= aPair.second.y; ++i)
{
pointSet.push_back(cv::Point(aPair.first.x, i));
}
} }
fill_con.push_back(pointSet);
} return fill_con;
}

  

opencv获得轮廓内的所有坐标的更多相关文章

  1. 【python+opencv】轮廓发现

    python+opencv---轮廓发现 轮廓发现---是基于图像边缘提取的基础寻找对象轮廓的方法, 所有边缘提取的阈值选定会影响最终轮廓发现的结果. 介绍两种API使用: -cv.findConto ...

  2. OpenCV—Python 轮廓检测 绘出矩形框(findContours\ boundingRect\rectangle

    千万注意opencv的轮廓检测和边缘检测是两码事 本文链接:https://blog.csdn.net/wsp_1138886114/article/details/82945328 1 获取轮廓 O ...

  3. opencv 图像轮廓

    图片解析: 原图: code: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\c ...

  4. OpenCV 矩形轮廓检测

    转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213, 来自:shiter编写程序的艺术 基础介绍 OpenCV里提取目 ...

  5. opencv查找轮廓---cvFindContours && cvDrawCountours 用法及例子

    http://blog.csdn.net/timidsmile/article/details/8519751 环境: vs2008 + opencv2.1 先看,这两个函数的用法(参考 opencv ...

  6. 【opencv】轮廓相关

    IplImage* contours_rect; IplImage* contours; CvMemStorage* countours_storage=NULL; if(contours_rect= ...

  7. 学习opencv跟轮廓相关的

    查找轮廓 轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线.表示的方法可能根据不同情况而有所不同.有多重方法可以表示曲线.在openCV中一般用序列来存储轮廓信息.序列中的每一个元素 ...

  8. OpenCV -- 获取轮廓照片

    import cv2 img = cv2.imread( 'E:\A.jpeg' ) cv2.imshow( 'img', img ) gray = cv2.cvtColor( img, cv2.CO ...

  9. OpenCV图像轮廓检测

    轮廓检测: 轮廓检测的原理通俗的说就是掏空内部点,比如原图中有3*3的矩形点.那么就可以将中间的那一点去掉. 一.关键函数1.1  cvFindContours函数功能:对图像进行轮廓检测,这个函数将 ...

随机推荐

  1. 洛谷P3157 [CQOI2011]动态逆序对

    题目大意: 给定\(1\)到\(n\)的一个排列,按照给定顺序依次删除\(m\)个元素,计算每个元素删除之前整个序列的逆序对数量 基本套路:删边变加边 那么我们不就是求满足\(pos_i<pos ...

  2. 小米笔试题:无序数组中最小的k个数

    题目描述 链接:https://www.nowcoder.com/questionTerminal/ec2575fb877d41c9a33d9bab2694ba47?source=relative 来 ...

  3. Anaconda入门教程【快速掌握】

    Anaconda 使用指南 概述 很多学习python的初学者甚至学了有一段时间的人接触到anaconda或者其他虚拟环境工具时觉得无从下手, 其主要原因就是不明白这些工具究竟有什么用, 是用来做什么 ...

  4. MAT 4378 – MAT 5317, Analysis of categorical

    MAT 4378 – MAT 5317, Analysis of categorical data, Assignment 3 1MAT 4378 – MAT 5317, Analysis of ca ...

  5. 基于仿射的非刚体配准方法(i) 法向

    为啥闲呢,因为work干完了. 为啥补档呢,因为有新work了. 呃,因为新work让人自闭. 我现在干完了两部分.一是把最近邻的部分迁移过来. 二是求法向. 首先是给三个点,就能确定平面——因为是三 ...

  6. VS 插件 ReSharper 的个人习惯

    个人习惯 1. 按 F12 恢复转到定义 很多时候,我个人不太喜欢一按 F12 就跳转到 ReSharper 自带的 查看代码浏览器,我还是喜欢 VS 默认的,于是点击菜单栏的 "RESHA ...

  7. UWP 推荐 - 限时免费的RSS阅读器《RSS 追踪》登录 Windows 10

    文/云之幻 前不久,博客作者 Bravo Yeung 写了一篇还算略受欢迎的关于 RSS 的文章 .Net开发者必知的技术类RSS订阅指南. RSS 现在用的人很少了,而且就算是我,也不过是在一周前才 ...

  8. RookeyFrame模块初始化

    上一篇讲了下线上创建模块,这一次讲下线下创建的模块如何初始化,实体类的创建可参考Demo中的客户主数据模块 首先讲下model类创建中的约定: 1.所有数据模型继承BaseEntity 2.需要绑定枚 ...

  9. C# 灵活切换开发/测试/生成环境web.config

    web.config <configuration> <connectionStrings configSource="config\Sit.db.config" ...

  10. Subversion——密码保存位置

    Subversion——密码保存位置 摘要:本文主要说明了Subversion在电脑上保存密码的位置. 起因 在向本地电脑上的文件夹里下载程序代码的时候,发现输入了地址之后就能直接下载了,并没有提示输 ...