opencv学习之路(23)、轮廓查找与绘制(二)——访问轮廓每个点
一、简介

二、画出每个轮廓的每个点
#include "opencv2/opencv.hpp"
using namespace cv; void main()
{
Mat src=imread("E://22.jpg");
Mat temp=src.clone();
//转灰度图,二值化
cvtColor(src,src,CV_BGR2GRAY);
threshold(src,src,,,THRESH_BINARY);
imshow("thres",src);
//查找并绘制轮廓
vector<vector<Point>>contours;
vector<Vec4i>hierarcy;
findContours(src,contours,hierarcy,CV_RETR_TREE,CV_LINK_RUNS);
/*drawContours(temp,contours,-1,Scalar(0,255,0),2,8); 绘制并显示所有轮廓
imshow("contours",temp);*/ //绘制轮廓的每一个点
for(int i=; i<contours.size(); i++){
for(int j=; j<contours[i].size(); j++){
circle(temp,Point(contours[i][j].x,contours[i][j].y),,Scalar(,,),,);
}
}
imshow("contours",temp);
waitKey();
}

轮廓太密集了,稍微改改参数
for(int j=; j<contours[i].size(); j+=){
circle(temp,Point(contours[i][j].x,contours[i][j].y),,Scalar(,,),,);
}

稍微改改,有另一种效果(动态射线)
for(int i=; i<contours.size(); i++){
for(int j=; j<contours[i].size(); j+=){
circle(temp,Point(contours[i][j].x,contours[i][j].y),,Scalar(,,),,);
line(temp,Point(,),Point(contours[i][j].x,contours[i][j].y), Scalar(, , ), , );
waitKey();
imshow("contours", temp);
}
}

改改又是一种效果


三、孔洞填充
#include "opencv2/opencv.hpp"
using namespace cv; void main()
{
Mat src=imread("E://33.jpg");
Mat temp=src.clone();
//转灰度图,二值化
cvtColor(src,src,CV_BGR2GRAY);
threshold(src,src,,,THRESH_BINARY);
imshow("thres",src);
//查找并绘制轮廓
vector<vector<Point>>contours;
vector<Vec4i>hierarcy;
findContours(src,contours,hierarcy,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE); ///孔洞填充
findContours(src, contours, hierarcy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); //查找轮廓
drawContours(temp, contours, -, Scalar(, , ), -, ); //绘制轮廓
imshow("contours",temp);
waitKey();
}

稍微改改


opencv学习之路(23)、轮廓查找与绘制(二)——访问轮廓每个点的更多相关文章
- opencv学习之路(28)、轮廓查找与绘制(七)——位置关系及轮廓匹配
一.点与轮廓的距离及位置关系 #include "opencv2/opencv.hpp" #include <iostream> using namespace std ...
- opencv学习之路(22)、轮廓查找与绘制(一)
一.简介 图2 二.代码 #include"opencv2/opencv.hpp" #include<iostream> using namespace std; us ...
- opencv学习之路(26)、轮廓查找与绘制(五)——最小外接矩形
一.简介 二.轮廓最小外接矩形的绘制 #include "opencv2/opencv.hpp" using namespace cv; void main() { //轮廓最小外 ...
- opencv学习之路(37)、运动物体检测(二)
一.运动物体轮廓椭圆拟合及中心 #include "opencv2/opencv.hpp" #include<iostream> using namespace std ...
- opencv学习之路(27)、轮廓查找与绘制(六)——外接圆、椭圆拟合、逼近多边形曲线、计算轮廓面积及长度、提取不规则轮廓
一.最小外接圆 #include "opencv2/opencv.hpp" #include<iostream> using namespace std; using ...
- opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形
一.简介 二.外接矩形的查找绘制 #include "opencv2/opencv.hpp" using namespace cv; void main() { //外接矩形的查找 ...
- opencv学习之路(24)、轮廓查找与绘制(三)——凸包
一.简介 二.绘制点集的凸包 #include<opencv2/opencv.hpp> using namespace cv; void main() { //---绘制点集的凸包 Mat ...
- opencv学习之路(29)、轮廓查找与绘制(八)——轮廓特征属性及应用
一.简介 HSV颜色空间(hue色调,saturation饱和度,value亮度) 二.HSV滑动条 #include "opencv2/opencv.hpp" #include ...
- opencv学习之路(39)、PCA
一.PCA理论介绍 网上已经有许多介绍pca原理的博客,这里就不重复介绍了.详情可参考 http://blog.csdn.net/zhongkelee/article/details/44064401 ...
随机推荐
- C# Aspose.Cells.dll Excel操作总结
简介 Aspose.Cells是一款功能强大的 Excel 文档处理和转换控件,不依赖 Microsoft Excel 环境,支持所有 Excel 格式类型的操作. 下载 Aspose.Cells.d ...
- 18.jwt加密
jwt 官网https://jwt.io/ jwt:json web token jwt-simple: https://www.npmjs.com/package/jwt-simple jsonwe ...
- 常用基础Linux操作命令总结与hadoop基础操作命令
cd命令:切换目录 (1)切换到目录 /usr/local cd /usr/local (2)去到目前的上层目录 cd .. (3)回到自己的主文件夹 cd ~ ls命令:查看文件与目录 (4)查看目 ...
- jQuery实现限制input框 textarea文本框输入字符数量的方法
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- SpringMVC+MyBatis+Druid使用MySQL8.0.11版本
1.使用MySQL8.0.11版本,要使用5.1.45或其他高版本驱动jar包,我本地使用的是最新的8.0.11 2.更换了MySQL驱动后,报Cannot find class [com.aliba ...
- gcd最大生成树模板
出处: ACM International Collegiate Programming Contest, Egyptian Collegiate Programming ContestArab Ac ...
- Pycharm调试:进入调用函数后返回
在菜单栏的view中勾选toolbar,然后点击工具栏中左箭头返回到调用函数处.
- Linux下一台服务器Redis主从复制(master-slave)配置
主从概念 ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构 master用来写数据,slave用来读数据,经统计:网站的读写比率 ...
- qt opencv编译错误 /usr/local/lib/libopencv_imgcodecs.so.3.1:-1: error: error adding symbols: DSO missing from command line
转载自:http://tbfungeek.github.io/2016/03/05/Opencv-%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%87 ...
- mybatis BindingException: Invalid bound statement (not found)
错误截图 解决措施 此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的. 通常我们在配置SqlSessionFactory时会有如配置 <!-- 配置Sq ...