之前在写opencv的时候,发现contourarea的返回值并不是轮廓的真实面积,感觉世界观都被颠覆了哈哈哈....
研究了一下,过程和结果如下:
first
首先看一下官方的文档:
画红色框的地方很明显的提示出,非0像素个数和轮廓面积很可能是不同的
实例代码也展示了这一点,建议跑一下
second
返回值可能是负值,需要用fabs()转成正值
third
ContourArea计算整个或部分轮廓的面积。在计算部分轮廓的情况时,由轮廓弧线和连接两端点的弦
围成的区域总面积被计算,如下图所示:
forth
使用countNonZero或者使用contour.size()来计算轮廓内的像素点个数