Nuestro grupo de trabajo ha estado largas horas investigando para dar soluciones a tus dudas, te brindamos la solución y nuestro objetivo es serte de mucha ayuda.
Solución:
De acuerdo, en un análisis posterior me di cuenta de que el cv2 desde que ha estado soportando numpy array estructura, ya no hay necesidad de una API, toda la imagen se puede manipular en el array sí mismo. p.ej:
img = cv2.imread('image.png')
img = img[c1:c1+25,r1:r1+25]
Aquí c1 es la ubicación del píxel de la columna del lado izquierdo y r1 es la ubicación de la fila correspondiente. E img ahora tiene la imagen especificada dentro de los píxeles como el ROI.
EDITAR: Muy bien explicado aquí, ¿Cómo copiar una región de imagen usando opencv en python?
Aquí hay una visualización para seleccionar un ROI de una imagen
-------------------------------------------
| |
| (x1, y1) w |
| ------------------------ |
| | | |
| | | |
| | ROI | h |
| | | |
| | | |
| | | |
| ------------------------ |
| (x2, y2) |
| |
| |
| |
-------------------------------------------
Considerar (0,0)
como la esquina superior izquierda de la imagen, de izquierda a derecha como la dirección x y de arriba a abajo como la dirección y. si tenemos (x1,y1)
como la parte superior izquierda y (x2,y2)
como el vértice inferior derecho de un ROI, podemos usar el corte Numpy para recortar la imagen con:
ROI = image[y1:y2, x1:x2]
Pero normalmente no tendremos el vértice inferior derecho. En casos típicos, lo más probable es que tengamos el cuadro delimitador del ROI (x,y,w,h)
coordenadas obtenidas de cv2.boundingRect()
al iterar a través de contornos
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]
Desde OpenCV v2.2, las matrices Numpy se usan de manera ingenua para mostrar imágenes. Es posible que este método de corte Numpy para extraer el ROI no funcione con versiones anteriores
Como se menciona en la documentación, y con respecto al mensaje de error que recibió, más bien necesita importar el módulo apropiado y luego llamar SetImageROI()
método:
import cv
cv.SetImageROI(imag, rect)
Sección de Reseñas y Valoraciones
Recuerda que puedes mostrar este artículo si te ayudó.