Случайный контур в OpenCV - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я написал немного кода, чтобы просто найти выпуклую оболочку руки, однако вокруг границы окна нарисован этот странный контур / граница. Как я могу избавиться от этой границы, потому что я пытаюсь что-то сделать с массивом numpy, который выводится, но эта странная граница испортила его.

import sys
import cv2
import numpy as np
from matplotlib import pyplot as plt


np.set_printoptions(threshold=sys.maxsize)

hand = cv2.imread('blackHand.jpg')

grayHand = cv2.cvtColor(hand, cv2.COLOR_BGR2GRAY)

ret, threshold = cv2.threshold(grayHand, 100, 255, cv2.THRESH_BINARY)
contours, hiearchy = cv2.findContours(threshold, cv2.RETR_TREE, 
cv2.CHAIN_APPROX_SIMPLE)

hull = [cv2.convexHull(c) for c in contours]

final = cv2.drawContours(hand, hull, -1, (0, 0, 255), 3)
for c in contours:

print(c)

cv2.imshow('Hand', hand)

plt.imshow(hand, cmap='gray', interpolation='bicubic')

plt.show()

cv2.waitKey(0)

cv2.destroyAllWindows()

Вывод, который я получаю, выглядит нормально например, просто массивы координат, однако один массив выглядит не так. Я считаю, что это граница.

[[[0 0]]

[[0 999]]

[[1163 999]]

[[1163 0]]]

Вот вывод изображения

1 Ответ

0 голосов
/ 09 апреля 2020

Вам нужно сделать свое изображение таким, чтобы стрелка была белой, а фон - черным, прежде чем получить контур. Так что переверните ваше изображение с пороговым значением.

threshold = 255 - threshold
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...