如何使用OpenCV Python在图像中检测多边形

如何使用OpenCV Python在图像中检测多边形

首先,我们在图像中检测所有对象的轮廓以检测多边形。然后循环遍历所有轮廓。找到每个轮廓的近似轮廓。如果近似轮廓中顶点的数量大于等于5,则绘制该轮廓并将其设为三角形。请参见以下伪代码。

for cnt in contours:
   approx = cv2.approxPolyDP()
   if len(approx) >= 5:
      cv2.drawContours()
      cv2.putText("Polygon")

步骤

我们可以使用以下步骤来检测图像中的多边形 –

  • 导入所需的库。在所有下面的示例中,所需的Python库是 OpenCV 。确保您已经安装了它。

  • 使用 cv2.imread() 读取输入图像,并将其转换为灰度。

  • 对灰度图像应用二值化 cv2.threshold() 。调整第二个参数以获得更好的轮廓检测。

  • 使用 cv2.findContours() 函数在图像中查找轮廓。

  • 从轮廓列表中选择一个轮廓(例如第一个轮廓) cnt 。或循环遍历所有检测到的轮廓。

  • 使用 cv2.approxPolyDP() 函数计算每个轮廓 cnt 的近似轮廓点 approx

  • 如果近似轮廓 approx 中的总顶点数为5个或更多,则在图像上绘制近似轮廓并将其设置为多边形。

  • 显示带有绘制轮廓和近似轮廓的图像。

让我们看一下下面的示例,以更好地理解。

示例

在这个Python程序中,我们检测输入图像中的多边形。我们还绘制了检测到的多边形的轮廓。

# import required libraries
import cv2

# read the input image
img = cv2.imread('polygons.png')

# convert the image to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# apply thresholding to convert the grayscale image to a binary image
ret,thresh = cv2.threshold(gray,50,255,0)

# find the contours
contours,hierarchy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
print("Number of contours detected:",len(contours))
for cnt in contours:
   approx = cv2.approxPolyDP(cnt, 0.01*cv2.arcLength(cnt, True), True)
   (x,y)=cnt[0,0]

   if len(approx) >= 5:
      img = cv2.drawContours(img, [approx], -1, (0,255,255), 3)
      cv2.putText(img, 'Polygon', (x, y),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 0), 2)
cv2.imshow("Polygon", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我们将使用以下图片作为该程序的 输入文件

如何使用OpenCV Python在图像中检测多边形

当您运行以上的Python程序时,它将产生以下的输出窗口−

Number of contours detected: 3

然后我们得到以下内容 输出 窗口 −

如何使用OpenCV Python在图像中检测多边形

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程