opencv_tutorial_code学习——画凸包convexHull()

tutorial_code\ShapeDescriptors\hull_demo.cpp

步骤:

1、灰度化

2、滤波

3、二值化

4、画轮廓 findContours()

5、画最小包围旋转矩形和最小包围椭圆

第一步:

vector<vector<Point> >hull( contours.size() );

for( size_t i = 0; i < contours.size(); i++ )

{   convexHull( Mat(contours[i]), hull[i], false ); }


第二步:

Mat drawing = Mat::zeros( threshold_output.size(), CV_8UC3 );

Mat drawing1 = 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, (int)i, color, 1, 8, vector<Vec4i>(), 0, Point() );

drawContours( drawing1, hull, (int)i, color, 1, 8, vector<Vec4i>(), 0, Point() );

}

结果图像:

opencv_tutorial_code学习——画凸包convexHull()