#python #numpy #opencv
#python #numpy #opencv
Вопрос:
я пишу какое-то определение цвета для тетриса, но когда я пытаюсь запустить код, я получаю эту ошибку:
Traceback (most recent call last):
File "C:Usershampus.ramstenDesktopDetection - test.py", line 49, in <module>
cv2.imshow("virtual_board", np.hstack([resize, output]))
File "<__array_function__ internals>", line 5, in hstack
File "C:Usershampus.ramstenAppDataLocalProgramsPythonPython38-32libsite-packagesnumpycoreshape_base.py", line 346, in hstack
return _nx.concatenate(arrs, 1)
File "<__array_function__ internals>", line 5, in concatenate
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 168 and the array at index 1 has size 1080
предполагаю, что это происходит отсюда, но я не знаю:
boundaries = (104, 120, 164)
boundaries1 = (106, 122, 166)
for (boundaries) in boundaries:
lower = np.array(boundaries, dtype = "uint8")
upper = np.array(boundaries1, dtype = "uint8")
board_mask = cv2.inRange(image, lower, upper)
output = cv2.bitwise_and(image, image, mask = board_mask)
contours, _ = cv2.findContours(board_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
print(contours)
contours = sorted(contours, key=lambda x: cv2.contourArea(x), reverse=True)
resize = ResizeWithAspectRatio(image, width=300)
cv2.imshow("virtual_board", np.hstack([resize, output]))
В чем проблема?
Комментарии:
1.
shape
2 входных массива не совпадают. Чтоresize.shape
такое иoutput.shape
? Возможно, вам потребуется (повторно) прочитать, чтоhstack
ожидается от его входных данных. Вы понимаете, что мы имеем в видуshape
?2. Я действительно новичок, так что нет, что это?
3. Итак, вы используете чужой код, но со своими собственными данными (или набором изображений)?
4. да, именно так, » pyimagesearch.com/2014/08/04/opencv-python-color-detection » и » pysource.com/2019/12/07 /… »
Ответ №1:
В вашем сообщении об ошибке точно указана причина:
ValueError: ...
but along dimension 0
the array at index 0 has size 168 and
the array at index 1 has size 1080
Ошибка произошла на самом деле в np.hstack, потому
что вы пытаетесь сложить горизонтально массивы с разным количеством строк.
Комментарии:
1. И как мне это исправить?
2. Если вы складываете горизонтально 2 массива, то они должны иметь одинаковое количество строк. Возможно , ResizeWithAspectRatio генерирует «слишком сильно сжатый» вывод. Другое решение, позволяющее, по крайней мере, выполнить hstack , — добавить к «меньшему» массиву столько строк, сколько необходимо для выравнивания их номеров строк. Другая проблема заключается в том, каким должно быть значение в добавленных строках (я не знаю, мои знания об обработке изображений очень ограничены).