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() );
}
结果图像: