对此我感到非常抱歉,但我几乎不知道出了什么问题,所以我将把它全部发布,它不是很长,但我正在使用一些我以前从未使用过的功能,所以我不知道关于出了什么问题,这似乎是 numpy hstack 的问题,但我真的不知道。我知道这很多,但是有人可以查看我的代码吗?
import numpy as np
import argparse
import cv2
import sys
image = cv2.imread("tetris.png")
virtual_board = cv2.imread("tetris.png")
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)
cnt = contours[0]
(board_x, board_y, board_w, board_h) = cv2.boundingRect(cnt)
cv2.drawContours(image, [cnt], -1, (0, 255, 0), 3)
cv2.drawContours(virtual_board, [cnt], -1, (0, 255, 0), 3)
def ResizeWithAspectRatio(image, width=None, height=None, inter=cv2.INTER_AREA):
dim = None
(h, w) = image.shape[:2]
if width is None and height is None:
return image
if width is None:
r = height / float(h)
dim = (int(w * r), height)
else:
r = width / float(w)
dim = (width, int(h * r))
return cv2.resize(image, dim, interpolation=inter)
resize = ResizeWithAspectRatio(image, width=300)
cv2.imshow("virtual_board", np.hstack([resize, output]))
cv2.waitKey(0)
我得到的错误是:
Traceback (most recent call last):
File "C:\Users\hampus.ramsten\Desktop\Detection.py", line 46, in <module>
cv2.imshow("virtual_board", np.hstack([resize, output]))
File "<__array_function__ internals>", line 5, in hstack
File "C:\Users\hampus.ramsten\AppData\Local\Programs\Python\Python38-32\lib\site-packages\numpy\core\shape_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