Я знаю, что он возвращает значение в кортеже из первого индекса контура, но как работает contour [:,:, 0] .argmin ()? - PullRequest
0 голосов
/ 09 мая 2020
cnts= cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
                        cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)

extLeft = tuple(c[c[:, :, 0].argmin()][0])
print(extLeft)
extRight = tuple(c[c[:, :, 0].argmax()][0])
print(extRight)
extTop = tuple(c[c[:, :, 1].argmin()][0])
print(extTop)
extBot = tuple(c[c[:, :, 1].argmax()][0])
print(extBot)

Я не могу понять, как он возвращает максимальные конечные точки в каждом направлении?

1 Ответ

0 голосов
/ 09 мая 2020
  • [:, :, 0] - первый столбец / строка в последнем измерении
  • x.argmin() возвращает индекс минимального значения x - обратите внимание, что это int, а не tuple, таким образом, c[c[:,:,0].argmin()] - это 2D
  • x[0] - уменьшает 2D-массив до 1D

Я предлагаю проверить, как это работает, с некоторым простым массивом, например np.arange(1000).reshape(...), вместо чего-то сложного. Тогда легче понять, что происходит на разных этапах.

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