返回值:返回img, contours和hierarchy(图像,轮廓和层级),返回的轮廓是最常用的,contours是list类型,表示所有轮廓,由不同层级的ndarray轮廓组成,每个轮廓保存其轮廓的坐标点。 opencv中绘制轮廓的函数: drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]) ...
(1)轮廓检测:cv2.findContours();(2)轮廓绘制:cv2.drawContours();(3)轮廓近似:cv2.approxPolyDP();(4)面积计算:cv2.contourArea();(5)周长计算:cv2.arcLength();(6)外接矩形:cv2.rectangle();(7)外接圆:cv2.circle() 在开始前,先导入需要用到的库文件以及图像数据,定义一个图像显示函数,方便后续绘图。
1、cv.findContours函数(查找轮廓) contours, hierarchy = cv2.findContours(img,mode,method) 参数: 返回: contours:轮廓 hierarchy:层级 # 1、根据二值图找到轮廓 contours, hierarchy = cv.findContours(binary, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) # 轮廓 层级 轮廓检索模式(推荐此) 轮廓逼近方法 2、cv....
```python image_with_contours = cv2.drawContours(image, contours, -1, (0, 255, 0), 2) ``` 6、显示结果: ```python cv2.imshow('Image with Contours', image_with_contours) cv2.waitKey(0) cv2.destroyAllWindows() ``` 通过以上步骤,就可以使用Python和OpenCV检测图像的轮廓。您可以根据需要调...
method:轮廓的近似方法。可以选择的方法包括: cv2.CHAIN_APPROX_NONE:保存所有的轮廓点。 cv2.CHAIN_APPROX_SIMPLE:仅保存轮廓的端点,例如一个矩形框的四个角点。 cv2.CHAIN_APPROX_TC89_L1和cv2.CHAIN_APPROX_TC89_KCOS:使用 Teh-Chinl chain 近似算法进行轮廓压缩。
Python OpenCV计算轮廓面积、周长并显示极点 效果图: 代码: import cv2 # 计算轮廓面积 def getArea(): ret_area = cv2.contourArea(contours[0]) # 计算第一个轮廓的面积 return ret_area def getGirth(): ret_girth = cv2.arcLength(contours[0], True) # 计算第一个图像轮廓的周长,轮廓是封闭的 ...
OpenCv中有两种轮廓逼近方法。它们是cv.CHAIN_APPROX_NONE和cv.CHAIN_APPROX_SIMPLE。如果通过cv.CHAIN_APPROX_NONE,则将存储轮廓的所有边界点。但实际上,我们需要所有的点吗? 例如,你发现了一条直线的轮廓线。需要这条直线上的所有点来表示这条直线吗?不,我们只需要这条线的两个端点。这就是cv.CHAIN_APPROX_SI...
第一个输出“轮廓”是图像中所有轮廓的Python列表。每个单独的轮廓都是对象边界点的 (x,y) 坐标的 Numpy 数组。第二个输出“层次结构”表示轮廓之间的关系,例如它是其他轮廓的子轮廓还是父轮廓等。OpenCV 将其表示为四个值的数组:[Next、Previous、First_Child、Parent]“Next表示同一层级的下一个轮廓。”“...
OpenCV实现的是一个比标准霍夫圆变换更为灵活的检测方法——霍夫梯度法,该方法运算量相对于标准霍夫圆变换大大减少。其检测原理是依据圆心一定是在圆上的每个点的模向量上,这些圆上点模向量的交点就是圆心,霍夫梯度法的第一步就是找到这些圆心,这样三维的累加平面就又转化为二维累加平面。第二步是根据所有候选中...