es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extraer la región de forma irregular de una imagen utilizando openCV.

Estoy tratando de aprender OpenCV ya que tengo interés en la Visión por Computadora y uno de los problemas que estoy intentando resolver es la extracción de regiones con formas irregularmente de una imagen dada. Por ejemplo, si tengo una imagen de este zapato:

enter image description here

¿Hay alguna manera en la que pueda aplicar una máscara a la imagen para extraer SOLAMENTE el logotipo grande de Nike de la imagen del zapato? ¡Cualquier idea será muy apreciada!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, una forma de extraer solo el gran logotipo de Nike de la imagen del zapato es mediante el uso de una máscara en OpenCV. Aquí hay un enfoque general para resolver este problema:

    1. Convierta la imagen a escala de grises utilizando la función cv2.cvtColor () en OpenCV.
    2. Aplique técnicas de umbralización como cv2.threshold () o cv2.adaptiveThreshold () para convertir la imagen en escala de grises en una imagen binaria.
    3. Utilice operaciones morfológicas como cv2.erode () o cv2.dilate () para eliminar ruido y suavizar los bordes de la imagen binaria.
    4. Encuentre contornos en la imagen binaria utilizando la función cv2.findContours () y recupere el contorno más grande en función de su área.
    5. Cree una máscara del mismo tamaño que la imagen binaria y rellene el contorno más grande utilizando la función cv2.drawContours ().
    6. Aplique la máscara en la imagen original utilizando la función cv2.bitwise_and () para extraer el gran logotipo de Nike.

    Aquí hay un código de ejemplo en Python utilizando OpenCV para extraer el gran logotipo de Nike de la imagen del zapato:

    import cv2
    
    img = cv2.imread('shoe.jpg')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
    
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
    closed = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
    
    contours, hierarchy = cv2.findContours(closed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    biggest_contour = max(contours, key=cv2.contourArea)
    
    mask = np.zeros_like(thresh)
    cv2.drawContours(mask, [biggest_contour], 0, 255, -1)
    
    result = cv2.bitwise_and(img, img, mask=mask)
    
    cv2.imshow('Result', result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    Nota: Este código asume que la imagen del zapato está en el mismo directorio que el script y se llama ‘shoe.jpg’.

Comments are closed.