这个边界矩形是面积最小的,因为它考虑了对象的旋转。用到的函数为cv2.minAreaRect()。返回的是一个 Box2D 结构,其中包含矩形左上角角点的坐标(x, y),矩形的宽和高(w, h),以及旋转角度。但是要绘制这个矩形需要矩形的 4 个角点,可以通过函数 cv2.boxPoints() 获得。 最小外接圆 函数cv2.minEnclosingCircle(...
moments()函数用于计算多边形和光栅形状的最高达三阶的所有矩。矩用来计算形状的重心、面积,主轴和其他形状特征等。 参数1,InputArray类型的 array,输入参数,可以是光栅图像(单通道,8位或浮点的二维 数组)或二维数组(lN 或N1)。 参数2,bool类型的binaryImage,有默认值 falsc。若参数取 true,则所有非零像素为1。
其中,p和q指空间矩的阶数,I(x,y)是对应位置的灰度值。 可以通过一阶矩和0阶矩计算图像的重心: 2.2中心矩 中心矩体现的是图像强度的最大和最小方向,具有平移不变性,计算方法如下式所示: 2.3归一化的中心矩 归一化的中心矩具有尺度不变性和平移不变性,计算方法如下示: 2.4Hu矩 Hu矩是由Hu在1962年提出的,...
(3)中心点(重心):通过图像矩计算得到的轮廓的中心点位置。可以用cv2.moments()计算得到。 (4)边界矩形:围绕着轮廓的边界矩形。最小的边界矩形和旋转的边界矩形分别可以用cv2.boundingRect()和cv2.minAreaRect()计算得到。 (5)凸包:包围轮廓的最小凸形状,可以用cv2.convexHull()计算得到。 (6)凸性缺陷:轮廓和...
把这两中边界矩形显示在下图中,其中绿色的为直矩形,红的为旋转矩形。 image.png 函数cv2.minEnclosingCircle() 可以帮我们找到一个对象的外切圆。它是所有能够包括对象的圆中面积最小的一个。 (x,y),radius=cv2.minEnclosingCircle(cnt)center=(int(x),int(y))radius=int(radius)img=cv2.circle(img,center...
我们假设要在下图中找一个矩形 然而这个图凹凸不平,直接提取轮廓无法提取到一个完美的矩形。因此我们就可以使用这个函数来近似这个形状了。这个函数的第二个参数epsilon,是从原始轮廓到近似轮廓的最大距离,是一个准确度参数。因此对它的调整对最后的结果很重要。
这个矩形不考虑对象的旋转,所以边界矩形的面积不是最小的,函数是cv2.boundingRect()。 假设矩形左上角的坐标是(x,y), (w, h)是它的宽和高 x,y,w,h = cv2.boundingRect(cnt) img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) ...
2周长(Perimeter):表示轮廓的边界长度。3边界框(BoundingBox):表示能够完全包围轮廓的矩形框。4最小外接矩形(MinimumEnclosingRectangle):表示能够完全包围轮廓的最小矩形框。5最小外接圆(MinimumEnclosingCircle):表示能够完全包围轮廓的最小圆。6中心点(Centroid):表示轮廓的重心位置。
OpenCV中几何形状识别与测量,基于Python+OpenCV3.4实现图像分析与策略,识别三角形、矩形、多边形、圆、计算它们的重心、周长与面积,等二值图像测量与分析的主要操作!
storage 用来存储检测到的一序列候选目标矩形框的内存区域。 scale_factor 在前后两次相继的扫描中,搜索窗口的比例系数。例如1.1指将搜索窗口依次扩大10%。 min_neighbors 构成检测目标的相邻矩形的最小个数(缺省-1)。如果组成检测目标的小矩形的个数和小于min_neighbors-1 都会被排除。如果min_neighbors 为 0, 则...