Saltar al contenido

Extraiga todos los cuadros delimitadores usando OpenCV Python

Hola usuario de nuestra página, hemos encontrado la respuesta a tu pregunta, has scroll y la encontrarás un poco más abajo.

Solución:

ahí tienes:

import cv2

im = cv2.imread('c:/data/ph.jpg')
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
contours, hierarchy = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)[-2:]
idx =0 
for cnt in contours:
    idx += 1
    x,y,w,h = cv2.boundingRect(cnt)
    roi=im[y:y+h,x:x+w]
    cv2.imwrite(str(idx) + '.jpg', roi)
    #cv2.rectangle(im,(x,y),(x+w,y+h),(200,0,0),2)
cv2.imshow('img',im)
cv2.waitKey(0)    

Un enfoque simple es encontrar todos los contornos, obtener las coordenadas del rectángulo delimitador usando cv2.boundingRect luego extraiga el ROI utilizando el corte Numpy. Podemos mantener un contador para guardar cada ROI y luego guardarlo con cv2.imwrite. Aquí hay un ejemplo de trabajo:

Imagen de entrada:

ingrese la descripción de la imagen aquí

ROI detectados para extraer resaltados en verde

ingrese la descripción de la imagen aquí

ROI guardados

ingrese la descripción de la imagen aquí

Código

import cv2
import numpy as np

# Load image, grayscale, Otsu's threshold 
image = cv2.imread('1.png')
original = image.copy()
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# Find contours, obtain bounding box, extract and save ROI
ROI_number = 0
cnts = cv2.findContours(thresh, 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)
    cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 2)
    ROI = original[y:y+h, x:x+w]
    cv2.imwrite('ROI_.png'.format(ROI_number), ROI)
    ROI_number += 1

cv2.imshow('image', image)
cv2.waitKey()

Si piensas que ha resultado útil este artículo, sería de mucha ayuda si lo compartieras con el resto juniors y nos ayudes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *