为什么我这里像提取目标图像,但是我只能用X坐标,不能用Y坐标

x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
zstp('img',img)
group = img[x-1000:x+h+5,x-5:x+w+5]
zstp('group',group)

 

这段代码是用于在原图像上绘制一个矩形框,将包围目标的轮廓框出来。x,y,w,h是轮廓的矩形边界框的左上角坐标和宽高。

接下来的代码是将原图像的一部分裁剪出来,即将轮廓框内的目标图像提取出来。其中,x-1000是指向左平移1000个像素,x+h+5是指向右平移h+5个像素,x-5是指向上平移5个像素,x+w+5是指向下平移w+5个像素。这样做的目的是扩大裁剪范围,以确保目标图像完整地被裁剪出来。

如果你只用X坐标而不能用Y坐标,可能是因为你的代码中只有X坐标被赋值了,而Y坐标没有被赋值或者被赋值错误。你可以检查一下代码中关于Y坐标的部分,看看是否有问题。

可能是因为您的代码中只提取了目标图像的水平方向(x轴)范围,而没有提取垂直方向(y轴)范围。您可以尝试修改代码,同时提取目标图像的x和y坐标范围,例如:


x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
zstp('img',img)
group = img[y-1000:y+h+5,x-5:x+w+5]
zstp('group',group)

这样就可以同时提取目标图像的x和y坐标范围了。