【opencv练习34 - 轮廓包围圆,矩形】
来源:互联网 发布:数据库一体机价格 编辑:程序博客网 时间:2024/06/11 19:03
/******************************************************* 测试程序【轮廓的包围矩形,圆】 时间:2016年9月3日********************************************************/Mat src; Mat src_gray;int thresh = 100;int max_thresh = 255;RNG rng(12345);void thresh_callback(int, void* );int main(void){ src = imread("Image.jpg", 1 ); cvtColor( src, src_gray, COLOR_BGR2GRAY ); blur( src_gray, src_gray, Size(3,3) ); const char* source_window = "Source"; namedWindow( source_window, WINDOW_AUTOSIZE ); imshow( source_window, src ); createTrackbar( " Threshold:", "Source", &thresh, max_thresh, thresh_callback ); thresh_callback( 0, 0 ); waitKey(0); return(0);}void thresh_callback(int, void* ){ Mat threshold_output; vector<vector<Point> > contours; vector<Vec4i> hierarchy; //【1、阈值检测 + findContours】 threshold( src_gray, threshold_output, thresh, 255, THRESH_BINARY ); //【threshold_output ——> contours】 findContours( threshold_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); //【2、多边形轮廓逼近】 vector<vector<Point> > contours_poly( contours.size() ); //多边形向量(点) vector<Rect> boundRect( contours.size() ); vector<Point2f>center( contours.size() ); vector<float>radius( contours.size() ); //【遍历所有轮廓】 for( size_t i = 0; i < contours.size(); i++ ) {//【轮廓——多边形contours ——> contours_poly】 approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true ); //【多边形——矩形contours_poly ——> boundRect】 minEnclosingCircle( contours_poly[i], center[i], radius[i] ); //【多边形——圆 contours_poly ——> center[i], radius[i]】 } //【3、绘制 多边形轮廓 + 矩形 + 圆】 Mat drawing = Mat::zeros( threshold_output.size(), CV_8UC3 ); for( size_t i = 0; i< contours.size(); i++ ) { Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawContours( drawing, contours_poly, (int)i, color, 1, 8, vector<Vec4i>(), 0, Point() ); //绘制多边形轮廓 rectangle( drawing, boundRect[i].tl(), boundRect[i].br(), color, 2, 8, 0 ); //矩形 circle( drawing, center[i], (int)radius[i], color, 2, 8, 0 ); //圆形 } /// Show namedWindow( "Contours", WINDOW_AUTOSIZE ); imshow( "Contours", drawing );}
0 0
- 【opencv练习34 - 轮廓包围圆,矩形】
- opencv c++函数 imgproc模块 22 创建包围轮廓的矩形和圆形边界框
- opencv开发笔记(十四):创建包围轮廓的矩形边界
- 【OpenCV笔记 15-2】OpenCV寻找物体最小包围矩形和最小包围圆
- 【opencv】轮廓外接矩形
- OpenCV 矩形轮廓检测
- opencv矩形轮廓提取
- opencv中使用形状包围轮廓
- 物体最小包围矩形,最小包围圆
- 创建包围轮廓的矩形和圆形边界框
- opencv画轮廓的外界圆矩形椭圆等
- OpenCV画轮廓的外界圆矩形椭圆等
- 【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形
- opencv学习之寻找凸包,使用多边形包围轮廓
- opencv学习(四十二)之多边形包围图像轮廓
- Opencv学习之使用多边形将轮廓包围
- 【opencv练习32 - 查找轮廓】
- OpenCV根据矩形轮廓进行倾斜校正
- 记录一些错误
- java sql like '%?%' 索引无效的有关问题 java sql like '%?%'取不到值
- 辨异 —— 数学基本概念
- maven+springMVC+mybatis框架搭建
- oracle列转行
- 【opencv练习34 - 轮廓包围圆,矩形】
- Java-NowCoder-求int型正整数在内存中存储时1的个数
- MySql Server5.7社区版的安装详情-配图【陈科肇】
- Write a function that takes a string as input and returns the string reversed.
- 【opencv练习35 - 轮廓旋转边界框 + 椭圆】
- ASoC Platform驱动代码框架图
- 用Java创建weka需要的Instance对象和arff文件
- VS2013 错误对照表(持续更新)
- Discriminative Action States Discovery for Online Action Recognition (动作识别 3)