我需要裁剪图像以使用opencv和python对其进行进一步处理。我需要裁剪图像中绿色矩形内的区域。使用“ haar_cascade_fullbody_Detector”绘制矩形
代码如下:
import numpy as np
import cv2
bodydetection = cv2.CascadeClassifier('haarcascade_fullbody.xml')
img = cv2.imread('original.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
body = bodydetection.detectMultiScale(gray, 1.009, 5)
for x, y, w, h in body:
# so we slightly shrink the rectangles to get a nicer output.
pad_w, pad_h = int(0.15*w), int(0.02*h)
cv2.rectangle(img, (x+pad_w+10, y+pad_h+10), (x+w-pad_w, y+h-pad_h), (0, 255, 0), 2)
cv2.imshow('img',img)
crop_img = img[x:x+w, y:y+h]
cv2.imshow('crop',crop_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
输入图像为:
haar级联的输出是:
裁剪后的图像是:
请提出任何解决方案。谢谢!
答案 0 :(得分:0)
好!我得到了答案。 crop_img的行应修改为
crop_img = img[y:y+h, x:x+w]
这将产生所需的输出。这是因为在opencv中,img协调序列是y坐标,然后是x坐标。