CAMBIA EL FONDO de una imagen o escena 🖼️ | Python - MediaPipe - OpenCV

Поділитися
Вставка
  • Опубліковано 2 січ 2025

КОМЕНТАРІ • 48

  • @OMES-va
    @OMES-va  3 роки тому +1

    ¡Hola, hola Omesitos 😊!. Les dejo el link de la programación realizada en este video: omes-va.com/cambiar-fondo-escena-python-mediapipe-opencv/ :) ¡Lindo día!

  • @oguapi
    @oguapi Рік тому

    🙌 Excelente explicacion, gracias

  • @fernandovicente5846
    @fernandovicente5846 3 роки тому +3

    Algun dia se valorara todo lo que enseñas lo mereces

    • @OMES-va
      @OMES-va  3 роки тому

      Muchas gracias Fernando! :')

  • @onemktdigital
    @onemktdigital 2 роки тому

    hola segui todos tus pasos y no puedo visualizar el video con figura blanca que sale depsues de l carga de los codigos minuto 3:02
    me sale 10 errores de incosistencia de tab y espacios como por ej frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) linea 17
    al ejectuar no hace nada. instale visual code sin ninguna extension que puede ser? gracias

    • @onemktdigital
      @onemktdigital 2 роки тому

      en tu pagina baje el codigo, y al ejecutarlo me sale 3 errores de los encabezados; de importar cv2, mediapipe y numpy...será que debo agregar extensiones? perdon soy nuevo

    • @OMES-va
      @OMES-va  2 роки тому

      Hola Guido debes instalar los paquetes con pip install. En cuanto a los espacios y tabs, suele dar un poquito de dolor de cabeza por la estrucutra que maneja Python, aunque con Visual Studio Code y otros editores e Ides pueden ayudarte a estructurar el programa.

  • @troyan6199
    @troyan6199 3 роки тому

    Saludos desde México Oaxaca. Siempre al tanto con tus videos. Gracias sigue así se te apoya y aprecia. Eres increíble y tú explicación clara y genial

    • @OMES-va
      @OMES-va  3 роки тому

      Muchas gracias TROYAN por siempre estar al pendiente, un abrazo enorme! :)

  • @asimov8585
    @asimov8585 3 роки тому

    Amo éste canal,me ha inspirado a seguir con computer vision

  • @jhancarlos2366
    @jhancarlos2366 3 роки тому

    Este canal es una joya, la acabo de descubrir hoy. Excelente video

    • @OMES-va
      @OMES-va  3 роки тому

      Muchas gracias @Jhan Carlos! :D

  • @TomiGoon
    @TomiGoon 3 роки тому

    Muchas , Muchas gracias :3 , no sabes cuanto me ayudaste con este video Gabi :3

  • @darklaker
    @darklaker 3 роки тому

    Justo esta aplicación pensé cuando sacaste el anterior video, ¡Muchas gracias!

    • @OMES-va
      @OMES-va  3 роки тому

      Hola Arturo, le diste en el clavo entonces! :D

  • @eduardorodriguezcouoh7558
    @eduardorodriguezcouoh7558 2 роки тому

    Gracias a ti comprendo estos temas, excelente contenido

  • @ogerene
    @ogerene Рік тому

    Hola buenos días Homes! Lo primero felicitarte y darte las gracias por el gran trabajo que haces con estos videos, estoy aprendiendo un montón con ellos.
    Me gustaría hacerte una consulta, estoy teniendo problemas al intentar implementar una imagen de fondo(El video ni lo probé, de momento solo hice funcionar los colores, implemente una ligera modificación a tu código), no se si es debido a que la imagen que aplique tiene que tener una resolución en concreto o algo, me sería de mucha ayuda si me pudieras echar un cable, muchas gracias!

  • @marcyvila5164
    @marcyvila5164 Рік тому

    🙂👍✨✨✨Muy bueno

  • @FernandoRamirez-to2kk
    @FernandoRamirez-to2kk Рік тому

    Hola, si usáramos una pantalla verde de fondo podría mejorar más el que haga un mejor y detallada máscara en la persona o que mejoraría todo el detalle? La calidad de la web cam podría influir? Gracias

    • @OMES-va
      @OMES-va  Рік тому

      Hola @FernandoRamirez-to2kk, entre más se diferencie el fondo de la persona, se deberían obtener mejores resultados. Si no me equivoco esto lo usa google en las videollamadas para cambiar el fondo. En cuanto a tu pregunta de la cámara, he experimentado que con una de menor calidad se obtienen peores resultados, entonces sí, la calidad de la cámara influye.

  • @arturolinares1689
    @arturolinares1689 9 місяців тому

    soy nuevo, me marca error en File "imagewhite.py", line 9, in
    with mp_selfie_segmentation.SelfieSegmentation(
    File "/Users/artleen/Desktop/oktol/lib/python3.8/site-packages/mediapipe/python/solutions/selfie_segmentation.py", line 54, in __init__
    super().__init__( espero me puedas ayudar

  • @teachermarco5104
    @teachermarco5104 3 роки тому +1

    está genial buen trabajo! y cuando integraras Arduino con Python, OpenCV y MediaPipe?

    • @OMES-va
      @OMES-va  3 роки тому +1

      Toño muchas gracias, sii pronto subiré un video usando arduino también. :)

  • @arturobobadilla472
    @arturobobadilla472 3 роки тому

    Hola, gracias por tus videos muy buenos. ¿como difuminar el fondo en lugar de eliminarlo o sustituirlo por un color o imagen?

    • @OMES-va
      @OMES-va  3 роки тому

      Hola Arturo, de eso se trata este video tutorial. :)

  • @LettyneD
    @LettyneD 2 роки тому

    y por que cuando ejecuto la primera parte del codigo la camara parece congelada?

  • @LettyneD
    @LettyneD 2 роки тому

    y como se guarda el video ya con el fondo cambiado? bueno en el sentido de convertirlo a mp4

    • @OMES-va
      @OMES-va  2 роки тому

      Hola Lettyne Draws, puedes usar cv2.VideoWriter, como en este tutotial: ua-cam.com/video/Iga2hPq1HA8/v-deo.html

    • @LettyneD
      @LettyneD 2 роки тому

      @@OMES-va gracias

  • @joseguevara777
    @joseguevara777 3 роки тому

    excellente vidéo, félicitations Gaby, continue à développer pour le monde car Python est déjà universel merci beaucoup

    • @OMES-va
      @OMES-va  3 роки тому

      Muchas gracias Sr. José! :D

  • @Arkaitz.M.A
    @Arkaitz.M.A 7 місяців тому

    Gran video.
    A mí me daba problema:
    bg = cv2.bitwise_and(bg_image, bg_image, mask=th_inv)# Aplicar el operador bitwise and
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'cv::binary_op'
    Lo solucioné redimensionando la imagen o el video que se importa para el fondo. Por si a alguien le viene bien, lo hice de la siguiente manera:
    h,w,_ = frame.shape #| Tomar las medidas h y w del frame, para redimensionar
    size=(w,h) #| el video de fondo. Tanto el video de fondo, como el
    bg_image=cv2.resize(bg_image,size) #| el frame han de ser del mismo tamaño

    bg = cv2.bitwise_and(bg_image, bg_image, mask=th_inv)

  • @sercova7539
    @sercova7539 3 роки тому

    Me encantan los proyectos que muestras. Felicitaciones, están muy bien hechos.
    ¿Sabes si hay alguna forma de guardar en video directamente lo que devuelve selfie_segmentation.process(frame_rgb)?
    Lo he intentado, pero parece que no es una simple imagen en escala de grises que se pueda juntar con otras y guardar el video con cv2.imwrite()

    • @OMES-va
      @OMES-va  3 роки тому

      Hola @Sercova, lo que pasa es que la imagen resultante no es uint8, por ello en el video se realiza esa conversión. Pruébalo cambiando a uin8 como en el video y cuéntame si te funciona. :)

  • @luisangelcastillo7795
    @luisangelcastillo7795 3 роки тому

    Me encanta tu trabajo, siempre esta bien explicado y fundamentado. Por el momento me sale un error de tipo "cv2.error: OpenCV(4.5.3) C:\Users
    unneradmin\AppData\Local\Temp\pip-req-build-1i5nllza\opencv\modules\core\src\arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U\opencv\modules\core\src\arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U || mtyp || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'cv::binary_op'" cuando intento insertar la imagen de fondo o el video me reitera el mismo error.
    Agradecería tu ayuda y muchas felicidades por tu trabajo

    • @justinperedochanel8235
      @justinperedochanel8235 3 роки тому

      A mi también me sale lo mismo alguien nos puede ayudar

    • @OMES-va
      @OMES-va  3 роки тому +1

      Hola Luis muchas gracias. Puedes darle un vistazo a ver si está correcto el nombre y path de la imagen de entrada, puede que no se esté encontrando la imagen. O verifica si dentro del path alguna carpeta tiene nombre con símbolos especiales, si es así retiralos.

    • @justinperedochanel8235
      @justinperedochanel8235 3 роки тому

      @OMES Como estas es un gusto conocerte no se si me creerás pero soy un niño de 12 años y sigo tus tutoriales y son geniales a mi tampoco me funciona el método de la imagen gracias por tu respuesta lo voy a intentar.
      Te comento que mas tarde voy a comenzar una serie de python en un canal que tengo es este es link ua-cam.com/channels/Cvkrvl0b4PyQEVnIIetybw.html si te interesa un seguidor me pidió que hiciera una serie de videojuegos con python entonces eso hago ahí también podrás comprobar que sale mi cara y todo jajja por si no me crees.

    • @JJauregui185
      @JJauregui185 3 роки тому +1

      Pudieron resolverlo?

    • @arturobobadilla472
      @arturobobadilla472 3 роки тому +3

      Buenas tardes, yo tambien tuve el mismo problema ( error "cv2.error: OpenCV(4.5.3) C:\Users
      unneradmin\AppData\Local\Temp\pip-req-build-1i5nllza\opencv\modules\core\src\arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U\opencv\modules\core\src\arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U || mtyp || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'cv::binary_op'"). Básicamente este error puede deberse a lo que dice Gaby, porque no este bien definida la ruta de los archivos, sin embargo, en mi caso fue porque la imagen de fondo no era del mismo tamaño que la imagen origen que estaba leyendo, por lo que la solución que encontré fue que para la imagen leída que deseaba de fondo redimensionarla al tamaño de la mascara, aquí pongo las lineas que agregue al código de Gaby para la solución.
      while True:
      ret, frame=cap.read()
      if ret==False:
      break
      frame_rgb=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
      results=selfie_segmentation.process(frame_rgb)
      _, th=cv2.threshold(results.segmentation_mask,0.75,255,cv2.THRESH_BINARY)
      th=th.astype(np.uint8)
      th=cv2.medianBlur(th,13)
      th_inv=cv2.bitwise_not(th)
      ancho=th_inv.shape[1]
      alto=th_inv.shape[0]
      bg_image1=cv2.imread("fondo.jpg") #Imagen para el fondo
      #Redimensionar imagen al tamaño de la mascara
      bg_image = cv2.resize(bg_image1, (ancho, alto), interpolation=cv2.INTER_AREA)
      #Hacemos un pequeño blur de la imagen del fondo
      bg_image = cv2.blur(bg_image,(30,30))
      #Construir el fondo
      bg=cv2.bitwise_and(bg_image,bg_image,mask=th_inv)
      fg=cv2.bitwise_and(frame,frame,mask=th)
      #Sumar el back con el foregraund
      resultado=cv2.add(bg,fg)

  • @jorgegavidiaferrer2364
    @jorgegavidiaferrer2364 3 роки тому

    hola, una pregunta, sabes que cuando realizas ese cambio de fondo, entre la imagen y el fondo existe una pequeña cantidad de pixeles que no son del color del fondo ni de la imagen, son pixeles que tienen cierto tipo de difuminacion de color para atenuar el cambio de color, no se si me explico. queria saber si se podria lograr hacerlo y que estos pixeles no existan en la foto?
    Muchas gracias por tu contenido, me ha ayudado mucho, primera vez en python y ha sido muy util, felicidades, espero que crezca mucho tu canal te lo mereces!!

    • @OMES-va
      @OMES-va  3 роки тому +1

      Hola Jorge, muchas gracias me alegro mucho que te guste el contenido! :) Tal vez te pueda servir jugar con la imagen binaria resultante con algunas operaciones de transformación morfológica. Puede que ello te ayude a mejorar los resultados.