web-dev-qa-db-fra.com

Trouvez des points externes extrêmes dans l'image avec Python OpenCV

J'ai cette image d'une statue.

enter image description here

J'essaie de trouver la plupart des points en haut, en bas, à gauche et à droite sur la statue. Existe-t-il un moyen de mesurer le bord de chaque côté pour déterminer le point le plus extérieur sur la statue? Je veux obtenir les coordonnées (x,y) De chaque côté. J'ai essayé d'utiliser cv2.findContours() et cv2.drawContours() pour obtenir un aperçu de la statue.

import cv2

img = cv2.imread('statue.png')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

contours = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[0]
cv2.drawContours(img, contours, -1, (0, 200, 0), 3)

cv2.imshow('img', img)
cv2.waitKey()
13
coffeewin

Vous n'avez pas besoin de code coûteux comme findContours. Il vous suffit de numériser l'image ligne par ligne des 4 côtés vers l'extérieur jusqu'à ce que vous trouviez le premier pixel non blanc.

De la gauche, commencez à numériser en haut à gauche vers en bas à gauche. Si aucun pixel blanc n'est trouvé, déplacez 1 pixel vers la droite et recommencez de haut en bas. Une fois que vous avez trouvé un pixel non blanc, il s'agit de votre left.

Faites de même pour tous les côtés.

0
RobAu