TypeError: integer argument expected, got float与TypeError: slice indices must be integers or None or None or have an index method
在做opencv相关图像处理时,遇到的一些问题,其中之一是
#快速均值平滑
def fastmeanblur(image,winsize,borderType=cv2.BORDER_DEFAULT):
halfH=(winsize[0]-1)/2 #注意这里表示一个简单的除法
halfW=(winsize[1]-1)/2
ratio=1.0/(winsize[0]*winsize[1])
#边界扩充
paddImage=cv2.copyMakeBorder(image,halfH,halfH,halfW,halfW,borderType)
paddIntegral=integral(paddImage)
rows,cols=image.shape[:2]
meanBlurImage=np.zeros(image.shape,np.float32)
r,c=0,0
for h in range(halfH,halfH+rows,1):
for w in range(halfW,halfW+cols,1):
meanBlurImage[r][c]=(paddIntegral[h+halfH+1][w+halfW+1]+
paddIntegral[h-halfH][w-halfW]-paddIntegral[h+halfW+1][w-halfW]
-paddIntegral[h-halfH][w+halfW+1])*ratio
c+=1
r+=1
c=0
return meanBlurImage
然后就出现了以下错误
或者该错误
但总之 ,这两种错误均为同一类,只因结果所要的数据类型是int,而你除完无法确保一定是int,也可能是float。
经百度后须将除号写多写一次,即为双斜杠
halfH=(winsize[0]-1)//2 #这样修改即可
参考链接:https://blog.csdn.net/c20081052/article/details/80576035