我想裁剪图像的某些区域(ROI),我目前正在从图像中提取一个矩形,而在这种形状下,我要提取一些始终位于同一局部的ROI,但是矩形/图像将具有不同的分辨率但是使用相同的比例(ID卡比例),所以我不能像我目前一样使用固定的高渗酸盐:
((x1,y1),(x2,y2)) = box.position
print(box.position)
cv.rectangle(cvImage, (x1, y1), (x2, y2), (255,0,0), 2)
但这不适用于所有图像,我想我已经指出了要点:)
无论矩形的分辨率/大小如何,如何使用%或类似的东西总是在矩形中获得相同的斑点。
谢谢。
答案 0 :(得分:0)
是的,您始终可以选择图像的相同比例。例如,提取具有由固定比例(或百分比)定义的坐标的矩形
img_w = 1000 # = cvImage.width
img_h = 1000 # = cvImage.height
tl_x = 10.0 / 100.0
tl_y = 10.0 / 100.0
br_x = 90.0 / 100.0
br_y = 90.0 / 100.0
print (tl_x, tl_y, br_x, br_y)
rect_tl = (int(tl_x * img_w), int(tl_y * img_h))
rect_br = (int(br_x * img_w), int(br_y * img_h))
print (rect_tl, rect_br)
#cv.rectangle(cvImage, rect_tl, rect_br, (255,0,0), 2)
这将计算大小为1000x1000的图像中的矩形坐标,但这是定义为img_w x img_h的变量
硬编码的矩形放置有10%的填充,使用左上角和右下角定义
如预期的那样,输出为:
0.1 0.1 0.9 0.9
(100, 100) (900, 900)
答案 1 :(得分:0)
您可以调整读取图像的大小,并可以裁切相同的区域:
image = cv2.imread("image,jpg")
resize_image = cv2.resize(image, (640, 480))
...