Вот визуализация для выбора области интереса на изображении
-------------------------------------------
| |
| (x1, y1) w |
| ------------------------ |
| | | |
| | | |
| | ROI | h |
| | | |
| | | |
| | | |
| ------------------------ |
| (x2, y2) |
| |
| |
| |
-------------------------------------------
Считайте (0,0)
как верхний левый угол изображения, слева направо как направление x и сверху вниз как направление y. Если у нас есть (x1,y1)
в верхнем левом углу и (x2,y2)
в качестве нижней правой вершины области интереса, мы можем использовать Numpy-срезку для обрезки изображения с помощью:
ROI = image[y1:y2, x1:x2]
Но обычно у нас не будет правой нижней вершины. В типичных случаях мы, скорее всего, будем иметь координаты (x,y,w,h)
ограничивающей рамки ROI, полученные из _ 7_ при повторении контуров
cnts = cv2.findContours(grayscale_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
x,y,w,h = cv2.boundingRect(c)
ROI = image[y:y+h, x:x+w]
Начиная с OpenCV v2.2, массивы Numpy наивно используются для отображения изображений. Этот метод нарезки Numpy для извлечения ROI может не работать со старыми версиями.
person
nathancy
schedule
03.10.2019