Procesamiento de imagen python-OpenCv Lectura de imagen capas BGR
Summary
TLDREste video tutorial en español guía a los usuarios sobre cómo trabajar con la lectura y escritura de imágenes en Python utilizando OpenCV. Se explica cómo se representan las imágenes RGB en tres matrices bidimensionales y cómo se pueden manipular estas capas individualmente. Se muestran comandos básicos para leer, mostrar y guardar imágenes, así como para transformar espacios de color de BGR a RGB. Además, se demuestra cómo extraer y visualizar cada capa de color, y se da un ejemplo de cómo mostrar imágenes con un color solo para ilustrar la teoría.
Takeaways
- 😀 Una imagen en formato RGB se representa mediante tres matrices bidimensionales, correspondientes a los planos de color azul, verde y rojo.
- 🔍 En Python, utilizando OpenCV, las imágenes se leen y se representan en formato BGR, no RGB, y se indexan desde 0 a 2.
- 📚 Al leer una imagen, se obtienen matrices bidimensionales que representan los valores de cada capa y, por tanto, los colores según la intensidad de cada píxel.
- 🖼️ Para leer una imagen en OpenCV, se utiliza la función `cv2.imread()`, y para mostrarla, se emplea `cv2.imshow()`.
- ⏱️ La función `cv2.waitKey()` permite hacer que la ventana de la imagen se mantenga abierta hasta que se presione una tecla, y `cv2.destroyAllWindows()` cierra todas las ventanas abiertas.
- 🔄 Se pueden transformar imágenes de color a escala de grises y viceversa mediante el uso de argumentos en las funciones de lectura y escritura.
- 📁 Es recomendable trabajar con la imagen y el archivo de código en la misma carpeta o utilizar rutas absolutas para la lectura de archivos.
- 🔀 Para concatenar matrices y mostrarlas como una sola imagen, se utiliza la función `np.hstack()` de la librería NumPy.
- 🎨 Para transformar el espacio de color de una imagen de BGR a RGB, se utiliza la función `cv2.cvtColor()` con el argumento `cv2.COLOR_BGR2RGB`.
- 📝 Se pueden crear imágenes que solo muestren un color específico al igualar a cero las capas no deseadas y concatenar estas imágenes para visualizar cada color individualmente.
Q & A
¿Cómo se representan las imágenes en formato RGB en Python y OpenCV?
-Las imágenes en formato RGB se representan en tres matrices bidimensionales correspondientes a cada uno de los planos o capas de la imagen: azul, verde y rojo.
¿Cuál es la diferencia entre una imagen a color y una imagen a escala de grises en OpenCV?
-Una imagen a color se representa con tres matrices correspondientes a los colores RGB, mientras que una imagen a escala de grises tiene una sola matriz que representa la luminosidad.
¿Cómo se realiza la lectura de una imagen en OpenCV?
-Para leer una imagen en OpenCV se utiliza la función `cv2.imread()`, donde se coloca el nombre de la imagen entre comillas y se puede especificar si se desea una imagen a color o a escala de grises mediante un argumento numérico.
¿Qué función se utiliza en OpenCV para mostrar una imagen?
-Para mostrar una imagen en OpenCV se utiliza la función `cv2.imshow()`, donde se coloca el título de la ventana y el nombre de la variable que contiene la imagen.
¿Cómo se guarda una imagen en OpenCV?
-Para guardar una imagen en OpenCV se utiliza la función `cv2.imwrite()`, donde se coloca el nombre y la extensión del archivo y el nombre de la variable que contiene la imagen.
¿Qué función de OpenCV permite esperar cierto tiempo antes de cerrar una ventana de imagen?
-La función `cv2.waitKey()` permite esperar cierto tiempo en milisegundos antes de cerrar una ventana de imagen. Si se coloca un 0, esperará hasta que se presione una tecla.
¿Cómo se cierran todas las ventanas abiertas en OpenCV?
-Para cerrar todas las ventanas abiertas en OpenCV se utiliza la función `cv2.destroyAllWindows()`.
¿Qué es el espacio de color BGR y cómo se relaciona con el espacio RGB?
-El espacio de color BGR es una representación de color utilizada en OpenCV donde los colores se ordenan en azul, verde y rojo, al revés del espacio RGB. Se puede convertir de BGR a RGB utilizando la función `cv2.cvtColor()`.
¿Cómo se concatenan las capas de una imagen en OpenCV para mostrarlas juntas?
-Para concatenar las capas de una imagen en OpenCV se utiliza la función `numpy.hstack()` para concatenar horizontalmente o `numpy.vstack()` para concatenar verticalmente.
¿Cómo se obtienen las capas individuales de una imagen en OpenCV?
-Para obtener las capas individuales de una imagen en OpenCV se accede a los índices correspondientes de la matriz de la imagen, donde el índice 0 corresponde al azul, el 1 al verde y el 2 al rojo.
Outlines
🖼️ Trabajando con imágenes y capas en Python
Este segmento del video tutorial se enfoca en cómo manipular imágenes y sus capas utilizando Python y OpenCV. Se explica que una imagen RGB se representa mediante tres matrices bidimensionales, una para cada canal de color (azul, verde y rojo). Al leer una imagen en Python con OpenCV, esta se almacena en formato BGR, con las capas indexadas desde 0 a 2. Se menciona la importancia de los valores numéricos de los píxeles, donde 0 representa negro y 255 representa blanco. Además, se presentan los comandos básicos de OpenCV para leer, mostrar y guardar imágenes, así como para pausar la ejecución del código y cerrar ventanas.
📂 Creando y ejecutando un script en Python
En este párrafo se describe el proceso de creación y ejecución de un script en Python para trabajar con imágenes. Se detalla cómo abrir un nuevo archivo en el editor de texto, activar la visualización de números de línea, importar la biblioteca OpenCV, y leer una imagen específica. Luego, se muestra cómo utilizar la función `cv2.imshow` para mostrar una imagen con un título específico y cómo pausar la ejecución con `cv2.waitKey`. También se explica cómo guardar una imagen en escala de grises y en color, y cómo cerrar todas las ventanas abiertas al final del proceso.
🌈 Obteniendo y mostrando capas de una imagen
Este segmento del tutorial se centra en cómo extraer y visualizar las capas individuales de una imagen en OpenCV. Se muestra cómo asignar cada capa de color (azul, verde, rojo) a variables diferentes y cómo utilizar la función `np.hstack` para concatenar estas capas horizontalmente en una sola imagen. Se menciona la necesidad de importar la biblioteca NumPy para realizar operaciones de concatenación de matrices. Además, se detalla el proceso de transformación de un espacio de color BGR a RGB y cómo mostrar las capas resultantes después de la transformación.
🎨 Visualización de colores individuales en una imagen
El último párrafo del script muestra cómo aislar y mostrar los colores individuales de una imagen utilizando Python y OpenCV. Se describe el proceso de crear copias de la imagen y manipular sus capas para mostrar únicamente el color azul, verde o rojo. Se utiliza la función `np.hstack` para concatenar las capas modificadas y se muestran las imágenes resultantes utilizando `cv2.imshow`. Finalmente, se cierra el proceso con `cv2.waitKey` y `cv2.destroyAllWindows`, y se invita al espectador a continuar aprendiendo sobre el manejo de imágenes en Python.
Mindmap
Keywords
💡Lectura y escritura de imágenes
💡Planos o capas de una imagen
💡Matriz bidimensional
💡Formato BCR
💡OpenCV
💡Función cv2.imread
💡Función cv2.imshow
💡Espacios de color
💡Concatenación de matrices
💡Transformación de espacio de color
Highlights
Exploración de la lectura y escritura de imágenes en Python utilizando OpenCV.
Representación de imágenes RGB en tres matrices bidimensionales correspondientes a cada plano.
Las imágenes en Python y OpenCV se manejan en formato BGR por defecto.
Explicación de cómo las matrices bidimensionales representan los valores de cada capa de color.
Los valores numéricos en las capas representan los colores según la intensidad de cada píxel.
El valor cero en una capa representa el negro y 255 representa el blanco.
Combinación de colores para crear una variedad de tonos a partir de las capas.
Comandos principales de OpenCV para la manipulación de imágenes, como `cv2.imread` y `cv2.imshow`.
Recomendación de trabajar en la misma carpeta para facilitar la lectura de imágenes.
Uso de `cv2.waitKey` para esperar una acción del usuario antes de cerrar una ventana de imagen.
Cómo guardar una imagen utilizando `cv2.imwrite`.
Uso del comando `cv2.destroyAllWindows` para cerrar todas las ventanas abiertas.
Importación de la librería NumPy para manipular matrices y realizar operaciones matriciales.
Concatenación de matrices con `np.hstack` para mostrar varias capas en una sola imagen.
Conversión de espacios de color utilizando `cv2.cvtColor` para transformar de BGR a RGB.
Visualización de las capas individuales de una imagen para entender su composición en colores.
Creación de imágenes que solo muestran un color específico al igualar las otras capas a cero.
Demostración de la diferencia entre las capas de una imagen en BGR y RGB.
Conclusión del tutorial con una recapitulación de los conceptos y comandos aprendidos.
Transcripts
saludos en esta ocasión veremos cómo
podemos trabajar con la lectura y
escritura de una imagen y en especial
veremos cómo trabajar con los planos o
capas de una imagen en python y open se
ve lo primero que vamos a tomar en
cuenta es que una imagen en formato de
color rgb se representa en tres matrices
bidimensionales correspondientes a cada
uno de los planos o capas de nuestra
imagen en el caso del trabajo de
imágenes con python vamos a estar
trabajando inicialmente con matrices los
cuales representan a cada una de estas
capas pero en el formato bcr por lo
tanto una vez que nosotros realizamos la
lectura de una imagen esta x de favor se
encontraría en el formato br en el caso
de python y open se ve al realizar la
lectura de estas imágenes tendríamos
inicialmente indexadas la primera capa
la matriz de la imagen en azul
posteriormente la segunda capa la matriz
del color verde y la tercera capa la
matriz del color rojo indexadas desde el
número 0 1 y 2 recordemos que cuando
realizamos la lectura de una imagen y la
descomponemos en cada una de sus capas
lo que
tendríamos son prácticamente matrices
bidimensionales los cuales nos indican
los valores de cada una de esas capas y
en conjunto cada uno de esos valores
estaría formando cada uno de esos
colores de acuerdo a la intensidad de
cada pixel en cada una de sus capas
podemos ver un ejemplo de la lectura de
esta imagen en donde se representa por
medio de rgb y cada uno de esos valores
numéricos representa el color de nuestra
imagen por otra parte una imagen
correspondiente a la letra a cuando
realizamos la lectura y descomponemos
esta imagen estaría representada en cada
uno de sus píxeles por estos valores
numéricos debemos de tomar en cuenta que
cuando tenemos en cada una de estas
capas el valor cero éste correspondería
al valor negro y en el caso de que
tengamos 255 en cada una de esas capas
en conjunto correspondería a un color
blanco posteriormente cuando se realiza
la combinación de cada uno de estos
colores podemos realizar y conformar la
diversidad o variedad de colores que
nosotros querramos los comandos
principales que vamos a utilizar para la
de imágenes en open tv inicialmente
colocando cb 2.1 reach y con este
comando estaríamos realizando la lectura
de una imagen y dentro de paréntesis en
comillas simples estaríamos colocando el
nombre de la imagen con la extensión que
queremos leer separado por coma el valor
numérico 0 o 1 correspondiente a el tipo
de imagen que queremos obtener si no
colocamos este argumento por default
el comando nos estaría devolviendo una
imagen a color y si colocamos un 0 nos
estaría devolviendo una imagen a escala
de grises por lo tanto si coloco yo un 1
obtengo una imagen a color y si coloco
un 0 obtengo una imagen en escala de
grises es recomendable trabajar dentro
de una misma carpeta es decir tanto la
imagen con la que estamos trabajando y
el archivo de código con el cual estamos
trabajando se encuentran dentro de la
misma carpeta de esta manera solamente
vamos a colocar el nombre de la imagen
para poder leer nuestro archivo en otro
caso si no se tiene la imagen en la
misma carpeta en donde se está
ejecutando mi archivo de código se puede
realizar la lectura de la imagen
por medio de la ruta absoluta dentro de
nuestro equipo colocando diagonales
dobles para que ésta pueda ser tomada en
cuenta y una vez que nosotros hemos
leído nuestra imagen podemos mostrarla
con el comando c b2 punto in show y
dentro de paréntesis vamos a colocar
primero dentro de comillas simples o
apostrophes el título de la ventana en
donde vamos a mostrar nuestra imagen y
posteriormente separado por coma vamos a
indicar el nombre de la variable en
donde se encuentra la imagen que
queremos mostrar si deseamos guardar una
imagen podemos utilizar el comando que
se ve dos puntos
write y dentro de paréntesis vamos a
colocar primero dentro de comillas
simples o apostrophes el nombre con el
cual queremos guardar nuestro archivo
junto con su extensión y separado por
coma el nombre de la variable en donde
se encuentran la información de nuestra
imagen finalmente vamos a estar
utilizando el comando cb2 weiqi y entre
paréntesis vamos a poder colocar un
valor en milisegundos esta línea de
comando nos va a permitir esperar cierto
tiempo y posteriormente estaría cerrado
en el caso de que nosotros coloquemos un
valor cero dentro de paréntesis una vez
que nosotros ejecutemos el código y este
muestra en nuestra imagen por medio de
una tecla estaría terminando nuestro
código y finalmente en la última línea
estaríamos cerrando todas las ventanas
abiertas algunos otros comandos que
vamos a utilizar en este vídeo son los
comandos para concatenar o transformar
en los diferentes espacios de color para
utilizar el comando para concatenar aquí
está esta vamos primero a realizar la
importación de la librería de lampe de
esta manera y posteriormente podemos
agregar un alias para poder ocupar de
una forma abreviada las funciones de
nanping en este caso importamos a noam y
como en ep ya teniendo este alias en ep
vamos a utilizar el comando h stack obed
stack
lo cual nos va a permitir concatenar de
forma horizontal o bien de forma
vertical las matrices que nosotros
queremos para posteriormente mostrarlas
como imagen finalmente con esta última
línea vamos a poder transformar nuestra
imagen a los diferentes espacios de
color en este ejemplo estamos
convirtiendo una
en el espacio de color br a rgb
iniciando con se ve dos puntos se ve te
color y dentro de paréntesis vamos a
colocar el nombre de la variable que
contiene la imagen en cierto espacio de
color y posteriormente con cb2 punto
color y un bajo y este apartado nosotros
lo podemos cambiar para determinar la
transformación o para convertir el
espacio de color y bien vamos a realizar
unos ejemplos
compay ton y open se ve bien para
comenzar ha generado una carpeta con el
nombre de open se ve en el escritorio la
cual solamente contiene estas tres
imágenes para iniciar voy a seleccionar
el edil de payton en esta opción desde
inicio y una vez ingresando voy a
presionar control n o bien puedo
seleccionar la opción file y new file
podemos observar que nos indica que se
puede abrir un nuevo archivo con control
n por lo tanto yo voy a presionar
control n estoy generando un nuevo
archivo y voy a colocar estas dos
ventanas a la mitad de mi pantalla antes
de comenzar
voy a activar la opción de mostrar el
número de líneas
ahora comenzando voy a importar a open
seven con import v2 una vez realizado
esto voy a crear la variable img y con
la función de 2.100 ruiz dentro de
paréntesis y comillas simples o
apostrophes voy a colocar el nombre de
la imagen que deseo leer en este caso
voy a comenzar con la imagen con el
nombre de 12.8 y no voy a indicar el
segundo argumento ahora utilizando la
función cb2 punto y show dentro del
paréntesis lo primero que voy a colocar
es el título de la ventana en este caso
colocaré imagen de una rosa y separado
por coma tengo que indicar el nombre de
la variable en el cual se aloja la
imagen en este caso es img ya realizado
esto ahora voy a utilizar la función cb2
punto white y dentro de paréntesis voy a
colocar un cero recordemos que esta
función le tenemos que pasar valores en
milisegundos y si colocamos un cero
estaría esperando que nosotros
presionemos una tecla para terminar el
proceso y posteriormente vamos a cerrar
las ventanas por lo tanto voy a colocar
pero ahora utilizando la función se ve
dos punto destruyó el windows estaríamos
cerrando todas nuestras ventanas bien
ahora antes de ejecutarlo voy a guardar
mi archivo justamente en esta misma
carpeta que se ubica en mi escritorio
con el nombre de ejemplo capas a esto le
podemos agregar la extensión punto pay o
podemos guardarlo directamente y se
estaría guardando con la extensión punto
país voy a dar en guardar observamos que
ya se ha guardado justamente en donde se
encuentran también las imágenes que voy
a utilizar y ahora ubicado en la ventana
de payton puedo seleccionar la opción de
room o bien puedo presionar la tecla f5
para ejecutar mi código por lo tanto yo
voy a presionar efe 5 en este momento ya
me está mostrando la imagen que estoy
leyendo y también podemos observar que
el título de la ventana contiene
justamente
imagen de una rosa que por el tamaño no
se puede observar completamente como
estamos utilizando la función wake y al
presionar cualquier tecla de mi teclado
esta ventana se cerraría por lo tanto
voy a presionar la barra de espacio se
está cerrando y finalmente con la última
línea se cierran todas las ventanas
abiertas también se observa que el
segundo argumento del comando y enric no
lo he colocado por lo tanto me estaba
mostrando una imagen a color ahora
separado por coma voy a colocar
el número 1 lo cual me estaría mostrando
nuevamente la imagen a color voy a
presionar
efe 5 y correr el código lo guardo y
nuevamente podemos observar nuestra
imagen presiono cualquier tecla para
cerrar esta ventana y terminar la
ejecución de nuestro código ahora si yo
modificó este segundo argumento y colocó
un valor 0 esto me estaría devolviendo
una imagen a escala de grises nuevamente
presione f5 y enter para guardar los
cambios aquí ya tenemos el resultado en
donde observamos la imagen en escala de
grises ahora aprovechando este cambio a
escala de grises voy a utilizar el
comando se ve dos puntos el right para
guardar la imagen en escala de grises y
dentro de paréntesis dentro de comillas
simples o apostrophes voy a colocar el
nombre y la extensión de mi imagen la
voy a guardar como rosa punto png y
ahora separado por coma tengo que
indicar el nombre de la variable en
donde se aloja la imagen que quiero
guardar en este caso la variable es img
previamente observamos dentro del
contenido de la carpeta
que no se encuentra la imagen en escala
de grises y ahora al ejecutar mi código
presionando f 5 me está mostrando la
imagen a escala de grises y al mismo
tiempo me estaría guardando una imagen
con el nombre de rosa y la extensión
punto png presiono cualquier tecla para
cerrar esta ventana y estaría terminando
mi proceso ahora voy a comentar esta
línea en donde guardo la imagen en
escala de grises con el símbolo del
numeral o gato bien ahora lo siguiente
que voy a realizar es obtener cada una
de las capas o niveles de mi imagen
recordando que una vez que obtengo una
imagen con open se ve esta estaría por
default en el formato b xerez por lo
tanto iniciando con la variable b la voy
a igualar a mi variable img de la cual
voy a obtener todas las filas todas las
columnas de la primera capa que es la
capa 0 con este mismo código voy a
utilizar la variable g
pero ahora obteniendo la segunda capa
con el índice 1 y ahora con la variable
ere estaría obteniendo la tercera capa
con el índice 2 y para poder mostrar
cada una de estas capas
o matrices de mi imagen voy a tener que
concatenar las y mostrarlas en una sola
imagen previamente voy a importar la
librería de nombre utilizando import
nombre
np recordemos que este último solamente
es un alias con el cual vamos a utilizar
las funciones de nube y generalmente se
utiliza np sin embargo este último puede
cambiar a conveniencia he realizado esto
ahora voy a generar una variable llamada
vgr y utilizando la función de nanping
voy a colocar n punto h stack y dentro
de paréntesis y corchetes
voy a concatenar la matriz b/g y r ahora
lo que voy a hacer es mostrar la imagen
concatenada de cada una de estas capas
utilizando la función cb2 punto y el
show dentro del paréntesis colocó un
título y separado por coma agregó el
nombre de la variable que es bcr ya ha
realizado esto voy a presionar f5 para
correr mi código presionó enter para
guardarlo me está mostrando un error
ya que no he realizado el cambio y en
este momento tengo una imagen en escala
de grises la cual solamente tiene un
solo nivel por lo tanto voy a colocar el
valor 1 para obtener una imagen a color
y posteriormente esta imagen a color se
estaría descomponiendo en cada una de
sus capas nuevamente presione f5 enter
para guardar y bien podemos observar
cada una de esas capas de nuestra imagen
original las cuales corresponderían al
color azul verde y rojo lo que sería el
bcr respectivamente presiono cualquier
tecla para terminar mi proceso y cerrar
las ventanas y bien ahora lo siguiente
que voy a realizar es una conversión en
el espacio de color pasando de vgr a rgb
para esto voy a utilizar la variable rgb
igualada al comando se ve 2.7 color y
dentro del paréntesis voy a colocar la
variable que contiene la imagen que
deseo transformar en este caso la
variable es img que contiene la imagen
en vejer separado por coma voy a
utilizar el comando c2 punto color guión
bajo
r tú rgb y con esto estaría realizando
la transformación del espacio de color
vgr
rgb ahora simplemente voy a copiar estas
líneas de la parte de arriba y voy a
cambiar las variables a rgb tomando r1
g1 y b 1 y en este caso estaría tomando
la variable rgb
nuevamente con la variable rgb 1
utilizando la función de nunca h stack
concatenó la variable r 1 g 1 y b1
correspondientes a las capas rgb
finalmente las muestro con cb 2 el show
y el nombre de la ventana será capas 2 y
la variable a mostrar es rgb nuevamente
presione f5 para ejecutar mi código bien
podemos observar ahora que tenemos en
esta imagen la descomposición de las
capas en esta imagen estamos mostrando
la imagen original y en esta imagen
estamos mostrando la imagen en rgb sin
embargo ahora voy a mostrar la imagen de
cada una de las capas de la
transformación a rgb por lo tanto mi
variable sería rgb 1 en donde se
encuentran concatenadas cada una de esas
capas presiona f5 y enter y bien ahora
podemos observar la diferencia entre
cada una de esas capas en donde podemos
observar en la parte superior las capas
del bcr y en la segunda imagen nombrada
como capas 2 tenemos
las capas correspondientes al rgb voy a
cambiar la imagen que estoy utilizando
por la imagen de rgb png realizado esto
presiona f5 bien podemos observar ahora
la diferencia correspondiente a nuestra
imagen original en donde en la primera
se está mostrando como primer capa la
capa del color azul correspondiente a
este círculo en la segunda se está
mostrando la capa correspondiente al
color verde y el color rojo en la parte
inferior podemos observar que cada una
de las posiciones de estas capas
corresponde justamente a la posición de
la imagen en rgb ya que tenemos primero
la capa roja
posteriormente la capa verde y
finalmente la capa azul bien finalmente
voy a mostrar en una imagen cada uno de
los colores correspondientes utilizando
el formato vgr por lo tanto voy a borrar
esta parte y ahora utilizando cada una
de estas capas voy a igualar a cero dos
de las capas para mantener solamente un
color y bien finalmente ya tengo el
código en donde
importado la librería copy para realizar
justamente copias de la variable en
donde se aloja la imagen asociadas a las
variables vgr posteriormente en cada uno
de estos apartados estoy igualando a
cero las capas del bcr y solamente estoy
dejando con los valores originales
aquella capa del color que quiero
mostrar en la primera capa estoy dejando
solamente la capa del color azul
posteriormente la capa del color verde y
la capa del color rojo
finalmente concatenó cada una de estas
imágenes con n punto h está colocando la
capa del color azul
posteriormente la verde y finalmente la
roja en la siguiente línea muestro la
imagen que contiene ya cada una de estas
imágenes mostrando solamente cada uno de
esos colores terminando con la línea de
waikiki que espera para presionar una
tecla y terminar el proceso y finalmente
cerrar todas las ventanas por lo tanto
voy a presionar f5 y a ejecutar el
código bien podemos observar que se está
separando correctamente cada una de
estas capas correspondientes al bcr
y se está mostrando correctamente cada
uno de esos colores bien por este vídeo
ha sido todo hasta luego
el agua
Weitere ähnliche Videos ansehen
Filtros de imágenes en Python y OpenCv
7. Botones Personalizados - Programar aplicaciones iOS - Curso de Xcode
Curso Photoshop | Cap: 2 | Las Capas
Curso de Android con Java: Control Spinner con items compuestos por una imagen y un TextView
Curso de Android con Java: Tomar foto mediante Intent - guardar en la memoria interna su miniatura
Te descubro La Mejor TRANSICIÓN de Power Point 🚀
5.0 / 5 (0 votes)