Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python履带车辆及;类型错误整数_Python_Python 3.x_Numpy_Opencv - Fatal编程技术网

Python履带车辆及;类型错误整数

Python履带车辆及;类型错误整数,python,python-3.x,numpy,opencv,Python,Python 3.x,Numpy,Opencv,我一直在用这个代码来识别车辆,但我一直都有一个错误。我不知道为什么会产生这个错误。我正在看文件,但什么也没找到。任何人都可以帮助我。提前谢谢 这是我无法解决的错误: 文件“c:\xampp\htdocs\DeteccionVehiculos\detect.py”,第31行,diffLeftRight 左=img[0:高度,0:一半] TypeError:切片索引必须是整数或无,或者具有索引方法 导入cv2 将numpy作为np导入 输入数学 def扩散下降(img): #比较图像的顶部和底部大小

我一直在用这个代码来识别车辆,但我一直都有一个错误。我不知道为什么会产生这个错误。我正在看文件,但什么也没找到。任何人都可以帮助我。提前谢谢

这是我无法解决的错误:

文件“c:\xampp\htdocs\DeteccionVehiculos\detect.py”,第31行,diffLeftRight 左=img[0:高度,0:一半] TypeError:切片索引必须是整数或无,或者具有索引方法

导入cv2
将numpy作为np导入
输入数学
def扩散下降(img):
#比较图像的顶部和底部大小
# 1. 将图像一分为二
# 2. 翻转顶部
# 3. 调整大小至相同大小
# 4. 比较差异
高度、宽度、深度=img.shape
一半=高度/2
顶部=img[0:一半,0:宽度]
底部=img[一半:一半+一半,0:宽度]
顶部=cv2。翻转(顶部,1)
底部=cv2。调整大小(底部,(32,64))
顶部=cv2。调整大小(顶部,(32,64))
返回(mse(顶部、底部))
def diffLeftRight(img):
#比较图像的左右大小
# 1. 将图像一分为二
# 2. 向右翻转
# 3. 调整大小至相同大小
# 4. 比较差异
高度、宽度、深度=img.shape
一半=宽度/2
左=img[0:高度,0:一半]
右=img[0:高度,一半:一半+一半-1]
右=cv2。翻转(右,1)
左=cv2。调整大小(左,(32,64))
右=cv2。调整大小(右,(32,64))
返回(mse(左、右))
def mse(图像A、图像B):
err=np.sum((imageA.astype(“float”)-imageB.astype(“float”)**2)
err/=float(imageA.shape[0]*imageA.shape[1])
返回错误
def isNewRoi(rx、ry、rw、rh、矩形):
对于矩形中的r:
如果abs(r[0]-rx)<40且abs(r[1]-ry)<40:
返回错误
返回真值
def检测区域感兴趣(帧,级联):
scaleDown=2
frameHeight,frameWidth,fdepth=frame.shape
#调整redondeamos para prevenir错误的大小
frame=cv2.调整大小(框架,(数学地板(框架宽度/向下缩放)),
数学地板(框架高度/缩放向下)))
frameHeight,frameWidth,fdepth=frame.shape
#哈尔探测。
cars=级联检测多尺度(帧,1.2,1)
新区域=[]
minY=int(帧高*0.3)
#迭代感兴趣的区域
对于汽车中的(x,y,w,h):
投资回报率=[x,y,w,h]
ROIMAGE=帧[y:y+h,x:x+w]
carWidth=ROI图像。形状[0]
如果y>minY:
diffX=diffLeftRight(图像)
diffY=圆形(diffUpDown(图像))
如果diffX>1600且diffX<3000且diffY>12000:
rx,ry,rw,rh=投资回报率
newRegions.append(
[rx*缩放向下,ry*缩放向下,rw*缩放向下,rh*缩放向下])
返回新区域
def DETECTARS(文件名):
矩形=[]
cascade=cv2.CascadeClassifier('../detecionwhiculos/cars.xml')
vc=cv2.VideoCapture(文件名)
如果vc.isopend():
rval,frame=vc.read()
其他:
rval=False
投资回报率=[0,0,0,0]
帧数=0
而rval:
rval,frame=vc.read()
cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY)
frameHeight,frameWidth,fdepth=frame.shape
#Convertimos la imagen a联合国运河
newRegions=detectRegionsOfInterest(帧,级联)
对于新区域中的区域:
如果isNewRoi(区域[0],区域[1],区域[2],区域[3],矩形):
矩形。追加(区域)
对于矩形中的r:
cv2.矩形(帧,(r[0],r[1]),(r[0]+r[2],r[1]+r[3]),(0,0255),3)
帧数=帧数+1
如果帧数>30:
帧数=0
矩形=[]
#显示结果
cv2.imshow(“结果”,帧)
cv2.等待键(1);
vc.release()
detectCars(“../DetecionHiculos/road.mp4”)

这是这行抛出的
类型错误:
right=img[0:height,half:half+half-1]


尝试将
half+half-1
包装在括号中或
int(half+half-1)
中,因为它可能是一个浮点值。

这是一个由此行引发的
类型错误:
right=img[0:height,half:half+half-1]


尝试将
half+half-1
包装在括号中或
int(half+half-1)
中,因为它可能是一个浮点值。

我认为您的一半可能是浮点值

half = height/2 
left = img[0:height, 0:half]

也许你把一个奇数除以2,看看你的高度值,我想你的一半可能是浮点值

half = height/2 
left = img[0:height, 0:half]

也许你把一个奇数除以2,看看你的高度值,如果
half=width/2
是一个浮点数怎么办?e、 g.,4.5,不能使用
[0:4.5]
索引到数组中,请尝试
half=width//2
,因此
half
是整数而不是浮点。在尝试解决此问题时,您是否尝试打印
一半
高度
?如果是这样,您会看到
half
是一个浮点数,它有一个
.5
.0
解决了,非常感谢@hpaulj如果
half=width/2
是一个浮点数呢?e、 g.,4.5,不能使用
[0:4.5]
索引到数组中,请尝试
half=width//2
,因此
half
是整数而不是浮点。在尝试解决此问题时,您是否尝试打印
一半
高度
?如果是这样,您会看到
half
是一个浮点数,它有一个
.5
.0
。已解决,非常感谢@hpauljI不理解您的解决方案请原谅…:我不明白你的解决方案请原谅…:s