Open iansilva6 opened 5 years ago
%matplotlib inline import numpy as np import cv2 import imutils import matplotlib.pyplot as plt
image = cv2.imread("image_teste.png") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
plt.imshow(image) plt.show()
cnts = cv2.findContours(gray.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) cnts = imutils.grab_contours(cnts) clone = image.copy() cv2.drawContours(clone, cnts, -1, (0, 255, 0), 2) print("{} Contornos encontrados".format(len(cnts)))
plt.imshow(clone) plt.show()
for (i, c) in enumerate(cnts):
area = cv2.contourArea(c) perimeter = cv2.arcLength(c, True) print("Contorno #{} -- area: {:.2f}, perimetro: {:.2f}".format(i + 1, area, perimeter)) # desenhe o contorno na imagem cv2.drawContours(clone, [c], -1, (0, 255, 0), 2) # calcular o centro do contorno e desenhar o número do contorno M = cv2.moments(c) cX = int(M["m10"] / M["m00"]) cY = int(M["m01"] / M["m00"]) cv2.putText(clone, "#{}".format(i + 1), (cX - 20, cY), cv2.FONT_HERSHEY_SIMPLEX, 1.25, (255, 255, 255), 4)
clone = image.copy()
for c in cnts:
(x, y, w, h) = cv2.boundingRect(c) cv2.rectangle(clone, (x, y), (x + w, y + h), (0, 255, 0), 2)
plt.imshow(clone) plt.show() clone = image.copy()
%matplotlib inline import numpy as np import cv2 import imutils import matplotlib.pyplot as plt
Carrega a imagem
image = cv2.imread("image_teste.png") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
Exibe a imagem original
plt.imshow(image) plt.show()
Busca todas a bordas de objetos e desenha contordos sobre elas
cnts = cv2.findContours(gray.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) cnts = imutils.grab_contours(cnts) clone = image.copy() cv2.drawContours(clone, cnts, -1, (0, 255, 0), 2) print("{} Contornos encontrados".format(len(cnts)))
Exibe a imagem
plt.imshow(clone) plt.show()
for (i, c) in enumerate(cnts):
calcular a área e o perímetro do contorno
Exibe imagem
plt.imshow(clone) plt.show()
clone = image.copy()
loop sobre os contornos
for c in cnts:
encaixar uma caixa delimitadora no contorno
mostra a imagem de saída
plt.imshow(clone) plt.show() clone = image.copy()