python无法将输入数组从形状(144291,3)广播到形状(140300,3)

2024-04-19 03:03:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python创建一个方法来裁剪和缩放一个框架,如果框架对于屏幕来说太小,这个方法应该插入黑色的条。这里的问题存在于数组中,出于某种原因,它无法将一个放入另一个,我不知道为什么。这并不是发生在每一帧上,它似乎只是发生在一个随机帧上,与其他帧相比没有任何特殊之处。但它总是发生在同一帧上

def displayFrame(image, csFrame, h, w):
resizedImage = cv2.resize(image, (0,0), fx=csFrame.WScale, fy=csFrame.HScale)
desiredImage = resizedImage[int(csFrame.H * csFrame.HScale):int(csFrame.H * csFrame.HScale + h), int(csFrame.W * csFrame.WScale):int(csFrame.W * csFrame.WScale + w)]
starth = 0
startw = 0
newImage = np.zeros((h, w, 3), np.uint8) #If one of the two directions is "zoomed out" too much, black bars will fill in the excess space
if len(desiredImage) < h:
    starth = int(np.floor((h-len(desiredImage))/2))
if (len(desiredImage[0])) < w:
    startw = int(np.floor((w-len(desiredImage[0]))/2))
desiredH = len(desiredImage)
desiredW = len(desiredImage[0])
print("desired:", len(desiredImage[0:desiredH][0:desiredW]), len((desiredImage[0:desiredH][0:desiredW])[0]), "newImage:", len(newImage[starth:(starth+desiredH)][startw:(startw+desiredW)]), len((newImage[starth:(starth+desiredH)][startw:(startw+desiredW)])[0]), "start:", starth, startw)
newImage[starth:(starth+desiredH)][startw:(startw+desiredW)] = desiredImage[0:desiredH][0:desiredW]
return newImage

错误发生在返回之前的最后一行。我真的不知道为什么,但似乎“DesiredH”和“DesiredW”在这些不同的位置上有不同的值。此操作中未超出“newImage”或“desiredImage”的边界。我真的不知道为什么这些数组没有相同的大小,只是看看这个,它们应该有相同的大小,因为我通过它们的形状应该是什么样的


Tags: 方法框架lennp数组intnewimagehscale
1条回答
网友
1楼 · 发布于 2024-04-19 03:03:18

你必须用一些东西填充你的张量,因为形状加起来,144*291*3不等于140*300*3。我建议从数据集中删除此示例

相关问题 更多 >