opencv c++函数 imgproc模块 20 在图像中寻找轮廓
2013-05-03 14:30
267 查看
目标
在这个教程中你将学到如何:使用OpenCV函数 findContours
使用OpenCV函数 drawContours
原理
例程
教程的代码在下面给出. 你也可以从 这里 下载#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; int thresh = 100; int max_thresh = 255; RNG rng(12345); /// Function header void thresh_callback(int, void* ); /** @function main */ int main( int argc, char** argv ) { /// 加载源图像 src = imread( argv[1], 1 ); /// 转成灰度并模糊化降噪 cvtColor( src, src_gray, CV_BGR2GRAY ); blur( src_gray, src_gray, Size(3,3) ); /// 创建窗体 char* source_window = "Source"; namedWindow( source_window, CV_WINDOW_AUTOSIZE ); imshow( source_window, src ); createTrackbar( " Canny thresh:", "Source", &thresh, max_thresh, thresh_callback ); thresh_callback( 0, 0 ); waitKey(0); return(0); } /** @function thresh_callback */ void thresh_callback(int, void* ) { Mat canny_output; vector<vector<Point> > contours; vector<Vec4i> hierarchy; /// 用Canny算子检测边缘 Canny( src_gray, canny_output, thresh, thresh*2, 3 ); /// 寻找轮廓 findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); /// 绘出轮廓 Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 ); for( int i = 0; i< contours.size(); i++ ) { Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() ); } /// 在窗体中显示结果 namedWindow( "Contours", CV_WINDOW_AUTOSIZE ); imshow( "Contours", drawing ); }
例程说明
结果¶
原图和检测到的轮廓如下:相关文章推荐
- OpenCV: 寻找图像轮廓并绘制
- opencv c++函数 imgproc模块 23 轮廓矩
- OpenCV之imgproc 模块. 图像处理(5)在图像中寻找轮廓 计算物体的凸包 创建包围轮廓的矩形和圆形边界框 为轮廓创建可倾斜的边界框和椭圆 轮廓矩 多边形测试
- 在图像中寻找轮廓
- opencv学习(四十)之寻找图像轮廓findContours()
- 在图像中寻找轮廓
- opencv学习笔记 在输入图像上寻找并绘制轮廓
- OpenCV: 寻找图像轮廓并绘制
- 图像轮廓寻找
- 在图像中寻找轮廓
- OpenCV学习28--在图像中寻找轮廓
- Opencv 寻找图像最大轮廓
- OpenCV在图像中寻找轮廓和计算图像中物体的凸包
- 图像形状特征(四)--轮廓树及PGH
- 利用图像中物体轮廓做简单的图像匹配
- OpenCV图像内轮廓填-孔洞填充
- opencv c++函数 imgproc模块 19 模板匹配
- opencv6.5-imgproc图像处理模块之轮廓
- OpenCV中寻找轮廓函数cvFindContours的使用说明以及序列cvSeq的用法说明
- 【榜单】机器学习&深度学习近三年被引最多论文 Top 20,图像识别、GAN等(附下载)