怎么在Python中使用OpenCV标记图像区域轮廓

  介绍

这期内容当中小编将会给大家带来有关怎么在Python中使用OpenCV标记图像区域轮廓,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


import  cv2  as 简历      时间=src  cv.imread (“。/demo.jpg")      时间=gray  cv.cvtColor (src, cv.COLOR_BGR2GRAY)   #,cv.imshow (“src", src)      时间=gray  cv.GaussianBlur(灰色,,(5,,5),0)   时间=edges  cv.Canny(灰色,,70,,210)      cv.imshow (“edged",,边缘)

轮廓检测

下面就是检测图像轮廓具体位置的代码了:

轮廓,,hierarchy =, cv.findContours (edges.copy (),, cv.RETR_LIST,, cv.CHAIN_APPROX_SIMPLE)   打印(f"轮廓数量:{len(轮廓)}“)

在<代码>简历。findContours(边缘,简历。RETR_LIST cv.CHAIN_APPROX_SIMPLE) 中,第二个参数使用的是<代码>简历。RETR_LIST>

第三个参数使用的是<代码>简历。CHAIN_APPROX_SIMPLE>

观察上图,可以发现最外侧的边缘面积是最大的,所以依据面积进行排序,依据其他值也可以,获取面积最大的轮廓。

contours =,排序(轮廓,key =, cv.contourArea,, reverse =, True) [3]

对轮廓进行简单绘制,获得下图效果。

cv.drawContours (src,轮廓,1 (0,0255),2)

遍历轮廓,计算轮廓近似

先看代码:

#,遍历轮廓   for  c 轮廓拷贝:   #,计算轮廓近似   时间=peri  cv.arcLength (c,真的)   approx =, cv.approxPolyDP (0.02 c,,, *,妖精,,真的)

一个新的函数<代码>简历。arcLength> retval =, cv2.arcLength(曲线,,关闭)

该函数用于计算轮廓的周长。

下面的<代码>简历。approxPolyDP 函数原型如下:

approxCurve =, cv2.approxPolyDP(曲线,ε,,关闭[,approxCurve])

函数参数如下:

<李>

:<代码>曲线源图像的某个轮廓;

<李>

<代码>ε> <李>

<代码> :关闭轮廓是否闭合。

最重要的参数就是<代码>ε>

该函数返回值为轮廓近似多边形的角点。

绘制轮廓

最后判断,当上文返回的角点为4的时候,提取轮廓,代码如下:

#,遍历轮廓   for  c 轮廓拷贝:   #,计算轮廓近似   时间=peri  cv.arcLength (c,真的)   时间=approx  cv.approxPolyDP (c, 0.02, *,妖精,,真的)      #,当恰好是,,4个角点的时候,获取轮廓。   if  len(大约),==,4:   screen_cnt =约   打破      #,结果显示   cv.drawContours (src, [screen_cnt],, 1,, (0, 0, 255),, 2)

更换图片,进行再次轮廓检测,注意修改轮廓近似部分代码即可。

#,遍历轮廓   for  c 轮廓拷贝:   #才能,计算轮廓近似      approx 才能=,cv.approxPolyDP (c, 30日,真的)      if 才能len(大约),==,4:   ,,,screen_cnt =约   ,,,打破

怎么在Python中使用OpenCV标记图像区域轮廓