Ошибка значения Numpy Hstack

#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 , — добавить к «меньшему» массиву столько строк, сколько необходимо для выравнивания их номеров строк. Другая проблема заключается в том, каким должно быть значение в добавленных строках (я не знаю, мои знания об обработке изображений очень ограничены).