OpenCV 使用convexHull 函数遇到的一些问题

对于任意contour都能接受代码(仅限于图片)。
1.首先,若要使用convexityDefects  则必须声明 contour_hull的形式为
vector contour_hull(contour.size());
否则会报错,这点必须注意。
2.其次,一个可能的愚蠢问题来自 contour的size是不够的。
contour.size() > 3
这个就是说,不够四个点,没有凸包,原理很好理解。但也是大家最容易犯的错误。切记。
这条报错基本处在isContourConvex这个函数上。

编程中最主要的还是要关注具体问题的逻辑,不光是代码没问题。
编译能通过,只是说代码基础逻辑没问题,但业务逻辑未必符合。

下面是代码。

int ConvexHullTest(vector contour)
{
	vector contour_hull(contour.size());
	Mat contour_image(contour_hull);
	if (contour.size() > 3)
		cv::convexHull(Mat(contour), contour_hull, false);
	else
		return 0;
	vector defects(contour.size());
	if (!isContourConvex(contour) && contour_hull.size() > 3) {
		//cout<<"轮廓不是凸包"<


你可能感兴趣的:(OpenCV)