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. Linux学习笔记-第14天 老朋友相见

    熟悉的Apache,这次换了种方式和你见面.希望我能更懂你.

  2. <Array> 277 243 244 245

    277. Find the Celebrity knows(i, j): By comparing a pair(i, j), we are able to discard one of them 1 ...

  3. Project Euler Problem 675

    ORZ foreverlasting聚聚,QQ上问了他好久才会了这题(所以我们又聊了好久的Gal) 我们先来尝试推导一下\(S\)的性质,我们利用狄利克雷卷积来推: \[2^\omega=I\ast| ...

  4. github上计算String相似度好的项目

    项目中包含了杰卡德NGram.cosin夹角.最长公共子序列.边际距离等常用的相似度算法. https://github.com/tdebatty/java-string-similarity

  5. AngleSharp 实战(04)之遍历内部超链接(a)元素的 Href 和 InnerText

    文档地址:https://anglesharp.github.io/docs/Examples.html 直接贴代码了: using System; using System.Linq; using ...

  6. mvc ajax跳转controller 的路径

    mvc Controller : url: "../phone/index",(控制器名,方法名) 一般处理程序.ashx :  url: "../bianji.ashx ...

  7. Java学习——内存机制

    Java学习——内存机制 摘要:本文主要介绍了Java的内存机制. 部分内容来自以下博客: https://www.cnblogs.com/xrq730/p/4827590.html https:// ...

  8. Python【day 10】函数进阶-动态函数

    形参小结 1.位置参数2.默认值参数3.动态参数 1.*args 位置参数的动态传参. 系统会自动的把所有的位置参数聚合成元组 2.**kwargs 关键字参数的动态传参. 系统会自动的把所有的关键字 ...

  9. Linux下java验证码不显示:Could not initialize class sun.awt.X11FontManager

    一.问题 javaweb项目,登录的时候有个图片验证码的功能.在Windows本地测试能够正常显示,部署到Linux上就不行了.报错如下: org.springframework.web.util.N ...

  10. colmap编译过程中出现,无法解析的外部符号错误 “__cdecl google::base::CheckOpMessageBuilder::ForVar1(void)”

    错误提示: >colmap.lib(matching.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: cl ...