了解什么是轮廓

学习找轮廓,画轮廓等

你会看到这些函数:cv2.findContours(),cv2.drawContours()

什么是轮廓?

轮廓可以简单地解释为连接所有连续点(沿着边界),具有相同颜色或强度的曲线。轮廓是形状分析和物体检测和识别的有用工具。为了更好的准确性,使用二进制图像所以在找到轮廓之前,应用阈值或边缘检测。由于OpenCV 3.2,findContours()不再修改源图像,而是返回修改后的图像作为三个返回参数中的第一个。在OpenCV中,查找轮廓就像从黑色背景中找到白色物体。所以记住,要找到的对象应该是白色的,背景应该是黑色的。

让我们看看如何找到二进制图像的轮廓:

import numpy as np
import cv2
im = cv2.imread('test.jpg')
imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

参见cv2.findContours()函数有三个参数,第一个是源图像,第二个是轮廓检索模式,第三个是轮廓逼近方法。

并输出修改后的图像,轮廓和层次结构。

轮廓是图像中所有轮廓的Python列表。

每个单独的轮廓是对象的边界点的(x,y)坐标的Numpy数组。

如何绘制轮廓?

要绘制轮廓,使用cv2.drawContours函数。

它也可以用来绘制任何形状,只要你有它的边界点。

它的第一个参数是源图像,第二个参数是应该作为Python列表传递的轮廓,第三个参数是轮廓的索引(在绘制单个轮廓时有用)绘制所有轮廓,传递-1),剩余的参数是颜色,厚度

等等

To draw all the contours in an image:
cv2.drawContours(img, contours, -1, (0,255,0), 3)
To draw an individual contour, say 4th contour:
cv2.drawContours(img, contours, 3, (0,255,0), 3)
But most of the time, below method will be useful:
cnt = contours[4]
cv2.drawContours(img, [cnt], 0, (0,255,0), 3)

results matching ""

    No results matching ""