findContours 函数 hierarchy轮廓的层级关系终于弄懂了
来源:互联网 发布:javascript 矩阵库 编辑:程序博客网 时间:2024/05/19 15:25
本来就是云里雾里的,最近在写那个二维码的识别程序彻底把我弄崩溃了,决定好好弄懂轮廓的层级关系,前天一吧友推荐了一个相关资料,今天上午看了好一会,终于通过这个资料弄懂了。资料在这里:
http://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html
但是先说好,资料里说的跟我实际做的是不一样的,我的是opencv2.4.9,跟他说的轮廓层级关系的定义还是大不相同的,用opencv的朋友看我写的就行了,要不容易混啦,好啦,不说了,老规矩,直接上代码
#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace cv;using namespace std;Mat src; Mat src_gray;RNG rng(12345);int main( int argc, char** argv[] ){ src = imread( "3模板.jpg", 1 ); imshow("原图",src); cvtColor( src, src_gray, CV_BGR2GRAY ); blur( src_gray, src_gray, Size(3,3) ); Mat threshold_output; vector<vector<Point> > contours; vector<Vec4i> hierarchy; threshold( src_gray, threshold_output, 245, 255, 1 ); // 注意!!这里用的是模式1, findContours( threshold_output, contours, hierarchy, CV_RETR_TREE, CHAIN_APPROX_NONE, Point(0, 0) );//CHAIN_APPROX_NONE全体,CV_CHAIN_APPROX_SIMPLE,,,RETR_TREE Scalar color = Scalar(211,55,155 );//hierarchy[3][3]表示轮廓3的父级轮廓 hierarchy[ hierarchy[3][3]][3]表示轮廓3父级轮廓的父级轮廓 //hierarchy[3][0]、hierarchy[3][1]、hierarchy[3][2]、hierarchy[3][3]分别表示轮廓3的 前一个、后一个、子级、父级轮廓//只有轮廓8才有同级的前后轮廓,即hierarchy[8][0]和hierarchy[8][1] drawContours( src, contours,hierarchy[8][1], color, 2, 8, vector<Vec4i>(), 0, Point() ); printf("轮廓数%d\n", contours.size()); imshow( "Contours", src ); waitKey(0); return(0);}
注意findContours函数这里用的是
CV_RETR_TREE
表示轮廓建立层级关系,这里几个参数的区别就不说了,网上很多资料已经说得很清楚了hierarchy[8][1]表示轮廓8的下一个轮廓,drawContours( src, contours,hierarchy[8][1], color, 2, 8, vector<Vec4i>(), 0, Point() );在这个语句里面 hierarchy[8][1]等同意于1, hierarchy[8][0] 等同于9,,因为轮廓1和轮廓9都是轮廓8的同级轮廓
1 0
- findContours 函数 hierarchy轮廓的层级关系终于弄懂了
- findcontours查找轮廓函数
- 使用OpenCV的函数findContours提取轮廓并绘制轮廓
- 取轮廓的集合findContours与DrawContours的关系
- Hibernate与Jpa的关系,终于弄懂
- Hibernate与Jpa的关系,终于弄懂
- Hibernate与Jpa的关系,终于弄懂
- Hibernate与Jpa的关系,终于弄懂
- Hibernate与Jpa的关系,终于弄懂
- opencv里findcontours函数中hierarchy的意义
- findContours轮廓提取函数与drawContours轮廓绘制函数的使用
- findContours函数参数详解及hierarchy 分析
- 提取图像轮廓--findContours函数、drawContours函数
- 终于弄懂了聊天室的各种技术了
- [转]opencv轮廓提取(findcontours函数详解)
- 摸了好久,终于把linux中i2c的ioctl,write,read函数的使用弄懂了
- 关于汇编里面的PTR--天哪,终于弄懂了
- DC?设备上下文?怎么翻译的。。。终于弄懂了。
- LeetCode
- 从生产环境同步代码到测试服务器
- 三种 CString 输出方法
- js中let和var 的区别
- Intellij设置Jdk8的pom.xml
- findContours 函数 hierarchy轮廓的层级关系终于弄懂了
- android CTS测试
- 手势识别
- weblogic 下调用 getServletContext() 方法报错
- httpclient使用post提交json参数
- HTTP中的ETag在移动客户端的应用
- C# override 和 new 的区别
- 程序异常处理的相关技术
- PHP中MySQL、MySQLi和PDO的用法和区别