只是想快速询问我如何重塑我的列表,将形状打印为(50,25,3),形状为(50,25)。我有点困惑的是3实际来自哪里来说实话,我必须参考尺寸进行检查。所以我需要它们才能匹配,即使我必须改变实现。
一个清单:
def templates():
templatesArray = [[],[],[],[],[]]
counter = 0
for dirs in os.listdir(args["templates"]):
pathToFiles = args["templates"] + "/" + dirs + "/*.jpg"
for imagePaths in glob.glob(pathToFiles):
#print(imagePaths)
tempCard = cv2.imread(imagePaths)
templatesArray[counter].append(tempCard)
counter += 1
cv2.waitKey(0)
return templatesArray
其他清单
def pointsOfIntrest(img):
intrestArray = [[], [], [], [], []]
yStart = 335 ####Position of FlopOne Cards Upper Left Corner
xStart = 438
flopOne = img[yStart:yStart + 50, xStart:xStart + 25]
flopOne = cv2.cvtColor(flopOne, cv2.COLOR_BGR2GRAY)
flopOne = auto_canny(flopOne)
intrestArray[FLOP_ONE].append(flopOne)
xStart = 530
flopTwo = img[yStart:yStart + 50, xStart:xStart + 25]
flopTwo = cv2.cvtColor(flopTwo, cv2.COLOR_BGR2GRAY)
flopTwo = auto_canny(flopTwo)
intrestArray[FLOP_TWO].append(flopTwo)
xStart = 621
flopThree = img[yStart:yStart + 50, xStart:xStart + 25]
flopThree = cv2.cvtColor(flopThree, cv2.COLOR_BGR2GRAY)
flopThree = auto_canny(flopThree)
intrestArray[FLOP_THREE].append(flopThree)
xStart = 711
turn = img[yStart:yStart + 50, xStart:xStart + 25]
turn = cv2.cvtColor(turn, cv2.COLOR_BGR2GRAY)
turn = auto_canny(turn)
intrestArray[TURN].append(turn)
xStart = 801
river = img[yStart:yStart + 50, xStart:xStart + 25]
river = cv2.cvtColor(river, cv2.COLOR_BGR2GRAY)
river = auto_canny(river)
intrestArray[RIVER].append(river)
我知道这可以更好地实施。请问我的代码是否没有意义。 以下是我打印形状时的输出。
C:\ Users \ Turtle \ PycharmProjects \ MakeGood> python main.py --templates CardRawData --images Images
('50','25')
('50','25','3')
有点hacky and long但这就是我打印形状的方式。
print(str(pointsToCompare[FLOP_ONE][0].shape[0]),str(pointsToCompare[FLOP_TWO][0].shape[1]))
print(str(boardCards[FLOP_ONE][element].shape[0]), str(boardCards[FLOP_ONE][element].shape[1]),str(boardCards[FLOP_ONE][element].shape[2]))
通过EVERT将打印方法更改为更好的建议
print(str(pointsToCompare[FLOP_ONE][0].shape))
print(str(boardCards[FLOP_ONE][element].shape))
答案 0 :(得分:0)
埃弗特正确地指出了这个问题的答案。 数组正在读取第三维的RGB值,因为我没有在imread上正确设置标记。
在:
tempCard = cv2.imread(imagePaths)
后:
tempCard = cv2.imread(imagePaths, -1)
我不相信这是因为Evert耐心地为我解决了。非常感谢
与此相关的文档链接是here ,我的问题在引用标志的imread参数部分中引用。希望这会有所帮助。
再次感谢。