【opencv练习35 - 轮廓旋转边界框 + 椭圆】
来源:互联网 发布:越贵妃知乎 编辑:程序博客网 时间:2024/06/03 20:44
/******************************************************* 测试程序【轮廓的 旋转边界框 + 椭圆】 时间: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、阈值 + find轮廓】 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<RotatedRect> minRect( contours.size() ); vector<RotatedRect> minEllipse( contours.size() ); for( size_t i = 0; i < contours.size(); i++ ) { minRect[i] = minAreaRect( Mat(contours[i]) ); //【contours ————> minRect】 if( contours[i].size() > 5 ) // contours点数 > 5 { minEllipse[i] = fitEllipse( Mat(contours[i]) );//【contours ————> minEllipse】 } } //【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) ); //【轮廓】contour drawContours( drawing, contours, (int)i, color, 1, 8, vector<Vec4i>(), 0, Point() ); //【椭圆】 ellipse ellipse( drawing, minEllipse[i], color, 2, 8 ); //【旋转矩形】rotated rectangle Point2f rect_points[4]; minRect[i].points( rect_points ); for( int j = 0; j < 4; j++ ) line( drawing, rect_points[j], rect_points[(j+1)%4], color, 1, 8 ); } namedWindow( "Contours", WINDOW_AUTOSIZE ); imshow( "Contours", drawing );}![这里写图片描述](http://img.blog.csdn.net/20160909082508142)
0 0
- 【opencv练习35 - 轮廓旋转边界框 + 椭圆】
- opencv学习-imgprocess-计算轮廓的边界旋转box和椭圆
- opencv- 图像轮廓用旋转盒和椭圆表示
- 为轮廓创建可倾斜的边界框和椭圆
- OpenCV之imgproc 模块. 图像处理(5)在图像中寻找轮廓 计算物体的凸包 创建包围轮廓的矩形和圆形边界框 为轮廓创建可倾斜的边界框和椭圆 轮廓矩 多边形测试
- 为轮廓创建可倾斜的边界框和椭圆-- minAreaRect()和fitEllipse()
- OpenCV轮廓提取和椭圆拟合
- opencv轮廓检测并绘制椭圆
- opencv轮廓检测之椭圆检测
- OpenCV轮廓、边缘、边界的相关函数
- 4.轮廓的边界框
- 【opencv练习32 - 查找轮廓】
- OpenCV轮廓、多边形逼近、关键点、周长和面积、边界框、矩、轮廓树、凹凸包、几何直方图、匹配
- OpenCV轮廓、多边形逼近、关键点、周长和面积、边界框、矩、轮廓树、凹凸包、几何直方图、匹配
- opencv c++函数 imgproc模块 22 创建包围轮廓的矩形和圆形边界框
- opencv画轮廓的外界圆矩形椭圆等
- OpenCV画轮廓的外界圆矩形椭圆等
- opencv 皮肤检测 椭圆模型+轮廓去噪
- 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)
- FFmpeg的解复用器
- libsvm的使用方法及调参
- Hive2.1.0安装配置
- gerrit安装指南(ubuntu环境)