我有一个彩色图像sourceImage
,我会将此图像复制到一个新的更大的彩色图像destImage
上:源图像应该位于新图像的中心。为了执行此过程,我编写了以下代码:
destHeight:新的较大图像的高度destWidth:新的较大图像的宽度
sourceFilename:源映像的路径
sourceImage = cv2.imread(sourceFilename,1)
imgHeight, imgWidth, imgChannels = sourceImage.shape[:3]
#print sourceImage.shape[:3]
destImage = np.zeros((destHeight,destWidth,imgChannels), np.uint8)
#print destImage.shape[:3]
yBorder = (destHeight-imgHeight)/2
xBorder = (destWidth-imgWidth)/2
#print yBorder, xBorder
destImage[yBorder:imgHeight,xBorder:imgWidth] = sourceImage
cv2.imshow('dst', destImage)
cv2.waitKey(0)
但是当我运行脚本时,python解释器显示以下错误:
Traceback (most recent call last):
File "examples.py", line 30, in <module>
destImage[yBorder:imgHeight,xBorder:imgWidth] = sourceImage
ValueError: shape mismatch: objects cannot be broadcast to a single shape
这个错误的原因是什么?如何解决?
试试这个:
destImage[yBorder:yBorder + imgHeight,xBorder:xBorder + imgWidth] = sourceImage
切片语法是start:stop
,而不是start:width
。