一 :问题提出
最近使用OpenCV做图像处理 使用 contourArea算法来计算, 通过findContours 获取的轮廓的面积
findContours(img_edge, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
sort(contours.begin(), contours.end(), Contour_Area);
vector<Spot>spotProperty(((int)contours.size()) - 1);
for (int i = 0; i < ((int)contours.size()); i++)
{
int area = contourArea(contours[i]);
}
通过数据显示发现得到的 area有值为0的情况,但是轮廓的最小外接矩形的长、 宽又不为0 很是奇怪,而且明显不符合对面积的筛选实际。
具体解析可以参考 博客:https://blog.csdn.net/yiqiudream/article/details/51858421 的解释说明。
二:解决方式
通过在网上查询及探讨 发现可以通过 countNonZero算法来获取非0 数值的面积
具体解决算法如下 方式一:
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(img_edge, contours, hierarchy, RETR