0% encontró este documento útil (0 votos)
10 vistas12 páginas

Procesamiento de Imágenes con OpenCV

Este documento describe el procesamiento de imágenes y video utilizando OpenCV en Python. Explica cómo identificar colores en una imagen usando el espacio de color HSV mediante 4 pasos: 1) obtener la imagen, 2) convertir de BGR a HSV, 3) determinar los rangos del color objetivo, y 4) visualizar el color detectado sumando las máscaras binarias. También define funciones como cvtColor y inRange que son útiles para esta tarea.

Cargado por

Daysi Chivita
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas12 páginas

Procesamiento de Imágenes con OpenCV

Este documento describe el procesamiento de imágenes y video utilizando OpenCV en Python. Explica cómo identificar colores en una imagen usando el espacio de color HSV mediante 4 pasos: 1) obtener la imagen, 2) convertir de BGR a HSV, 3) determinar los rangos del color objetivo, y 4) visualizar el color detectado sumando las máscaras binarias. También define funciones como cvtColor y inRange que son útiles para esta tarea.

Cargado por

Daysi Chivita
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 1

Procesamiento de imágenes y video


Ingeniería Electrónica y Telecomunicaciones, Laboratorio de Aplicaciones con Sistemas Embebidos, GR-3
Escuela Politécnica Nacional
Quito, Ecuador
c

Abstract — En el presente documento se da a conocer


información relevante con respecto al procesamiento de
imágenes y videos en OpenCV. Se requiere consultar el El espacio de color HSV (matiz, saturación, valor) es un modelo
funcionamiento de la aplicación IP Webcam, así como, el para representar el espacio de color similar al modelo de color
procedimiento para identificar colores en una imagen RGB. Dado que el canal de matiz (H) modela el tipo de color,
mediante el método HSV. Además de trabajar mediante es muy útil en tareas de procesamiento de imágenes que
el lenguaje de programación de Python, el cual facilita el necesitan segmentar objetos en función de su color. La variación
manejo de las diferentes librerías para realizar la de la saturación (S) puede entenderse como qué tan fuerte es el
detección del texto en vivo y obtener líneas de texto. Se color que vemos; pasa de no saturada a representar sombras de
necesita consultar el principio de funcionamiento de las gris y completamente saturada (sin componente blanco). El
operaciones morfológicas en imágenes y la utilidad de las canal de valor (V) describe el brillo o la intensidad del color [2].
marcas de agua en las mismas, trabajos que son de
fundamental importancia elaborar antes del desarrollo de Para detectar un color en OpenCV utilizando el espacio de color
la práctica N°10 de Aplicaciones de Sistemas Embebidos. HSV, se han determinado 4 pasos, mismos que son explicados
mediante una ejemplificación:
Keywords — OpenCV, HSV, OCR, Python, IP Webcam.

I. OBJETIVOS
➢ Realizar scripts que permitan manipular imágenes
mediante OpenCV y Python.

II. INTRODUCCIÓN
OpenCV es una biblioteca de código abierto que nos brinda las
herramientas para realizar casi cualquier tipo de procesamiento
de imágenes y videos. OpenCV está escrito en C++ y su interfaz
principal está en C+. La visión artificial es una gran parte del
dominio de la ciencia de datos/Inteligencia Artificial. A veces,
mediante el uso de computadora se tiene
que lidiar con videos. [1]
Figura 1. Pasos para identificar un color en HSV.
La transmisión de video no es un proceso continuo, sino
discreto. Eso significa que, cada vez que tratamos con videos, Primer paso: Imagen a procesar
en realidad estamos tratando con la secuencia de fotogramas en Lo primero que se necesita es una imagen o fotograma para
sí. Cada cuadro es solo una imagen, que podría representarse sobre este detectar los colores. Se puede conseguir la imagen de
como una matriz de píxeles mxn, donde (m, n) es el tamaño de dos formas, leyendo una imagen o a través de un vídeo. En esta
la imagen. Cada píxel puede representarse como intensidad de ocasión se realizará a través de un vídeo streaming [3]:
color, según el modelo de color que estemos usando ya sea
escala de grises, RGB, HSV o incluso multiespectro. [1]

III. DESARROLLO DE CONTENIDOS


A. Consultar el procedimiento que se requiere para identificar
colores en una imagen o un video utilizando
el método de espacio de color HSV (Hue,
Saturation,Value).
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 2

Para este caso, se pretende identificar el color rojo, que se


encuentra al principio y al final del componente H [3]:

Figura 2. Ejemplificación de un código que permite la lectura del


video streaming.

En la línea 1 y 2 se importa OpenCV y Numpy, luego se Figura 4. Vista de la gama de colores disponibles en HSV.
inicializa el proceso de captura del video streaming.
Posteriormente, en la línea 7 se obtiene los fotogramas con los Como se observa en la figura 3, el componente en H va de 0 al
que se va a trabajar. [3] 79, y en este pasan colores de rojo, naranja, amarillo, verde,
azul, violeta y nuevamente rojo, entonces vamos a determinar 2
Segundo paso: Transformar de la gama de colores de rangos para el color rojo que está presente al principio y al final,
BGR a HSV el primer rango lo determinaremos de 0 a 8, y el segundo de 175
Por defecto OpenCV lee a las imágenes o fotogramas en BGR, a 179 en H, mientras que para los componentes S de 100 a 255,
por lo que, es necesario transformarlas al espacio de color HSV. y V de 20 a 255, para ambos rangos. [3]
Para ello se ayudará de la función [Link], como primer
argumento se le dará la imagen a transformar, y luego la
propiedad cv2.COLOR_BGR2HSV, para indicar que se
transformará de BGR a HSV. El código quedaría de la siguiente
manera hasta el momento [3]:

Figura 5. Ejemplificación de un código que identifica el color rojo


con HSV.
Figura 3. Ejemplificación de un código que permite transformar de
RGB a HSV. En la línea 6 y 7 se especifica el primer rango, para ello debemos
crear un array con Numpy, allí se especificarán los componentes
En la línea 9 podemos ver como se ha aplicado la función antes en H, S y V, seguido de np.uint8. El mismo procedimiento se
mencionada, entonces esta transformación queda guardada en realiza en las líneas 9 y 10, ahora para el segundo rango. Estas
la variable frameHSV. están ubicadas previo al while, debido a que solo será necesario
declararlas una vez. [3]
Tercer paso: Determinar los rangos en donde se
encuentra el color a detectar En las líneas 16, 17 y 18. Estas nuevas líneas son necesarias para
buscar los rangos, en este caso para detectar el color rojo, por
ello en la línea 16 se usa la función [Link], el primer
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 3

argumento es la imagen en la cual se buscará el rango, en este - cv2.COLOR_BGR2HSV: Es el proceso de


caso frameHSV, luego el límite inicial y final del primer rango, transformación de BGR a HSV.
el mismo proceso se realizará en la línea 17, para el segundo
rango. De aquí se obtendrán las imágenes maskRed1 y Función inRange() [6]:
maskRed2, que son binarias en donde el color blanco refleja el Esta función permite devolver una matriz de 255
lugar en donde está presente el primer y segundo rango elementos, si estos elementos se encuentran entre las dos
respectivamente, mientras que el color negro matrices representan los limites superior e inferior, si estos
mostrará el lugar donde no están presentes estos rangos. [3] elementos son 0 no se encuentran entre las dos matrices que
representan los limites superior e inferior
Cuarto paso: Visualización Sintaxis:
Como deseamos detectar el color rojo, y tenemos 2 rangos [Link](sourcearray, upperboundarray,
establecidos, debemos unirlos, para ello usaremos la línea 18. lowerboundarray) Donde:
Aquí estamos sumando ambas imágenes para mostrar en una - sourcearray: Es la matriz cuyos elementos se van a
sola (maskRed), la presencia del color rojo. maskRed por lo comparar con las matrices que representan los límites
tanto también será binaria. Entonces tenemos una imagen superior e inferior.
binaria, en donde el color rojo representa el color identificado o - upperboundarray: Es la matriz conformada por los
detectado según los rangos que hemos dado en el paso 3. Es elementos que representan a los límites superiores.
hora de visualizar este resultado. [3] - lowerboundarray: Es la matriz conformada por los
elementos que representan a los límites inferiores.
B. Consultar el funcionamiento de los métodos cvtColor(), - resultarray: Es la matriz que representa los elementos
color_BGR2HSV() y inRange(). Elaborar un script en iguales a 255 o 0 devueltos por la función inRange.
Python que permita detectar los colores de una fotografía
utilizando el método HSV, el script permitirá detectar los Codificación desarrollada:
colores amarillo, rojo y verde, mientras que las regiones
en dónde no se presente este color se visualizará de color
negro.

Función cvtColor() [4]:


Esta función permite convertir una imagen de un espacio de
color a otro.

Sintaxis:
[Link](origen, codigo[, dst[, dstCn]])
Donde:
- src: Es la imagen cuyo espacio de color se desea
modificar.
- codigo: Es el código de conversión del espacio de color.
- dst: Es la imagen de salida del mismo tamaño y
profundidad que la imagen src, parámetro opcional.
- dstCn: Representa el número de canales en la imagen
de destino. Si el parámetro es 0, el número de canales
se deriva automáticamente de src y código, parámetro
opcional.

Función color_BGR2HSV() [5]:


Esta función permite convertir RGB/BGR a HSV(hue,
saturation, value/valor de saturación de tono). Los valores
que puede tomar los canales HSV son:
H: 0-179
S: 0-255
V: 0-255

Sintaxis:
[Link](img,cv2.COLOR_BGR2HSV)
Donde:
- img: Es la imagen para procesar.
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 4

#Escuela Politécnica Nacional mask2 = [Link](hsv, lower_green,


#Díaz_Orosco_Preparatorio9_Ejer3.2 upper_green)

#Script que permite detectar los colores


amarillo, rojo y verde

#Importación de librerías
from unittest import result
import numpy as np import
cv2

#Se establecen los valores de los rangos de


las diferentes tonalidades de los tres colores
#Limites inferior y superior para color
amarillo
lower_yellow = [Link]([26,100,20],
np.uint8)
upper_yellow = [Link]([35,255,255],
np.uint8)
#Limites inferior y superior para color verde
lower_green = [Link]([36,100,20], np.uint8)
upper_green = [Link]([80,255,255],
np.uint8)
#Limites inferior y superior para color rojo
#Limite inferior de color Rojo de acuerdo con
HSV (espectro)
lower_red1 = [Link]([0,100,20], np.uint8)
upper_red1 = [Link]([8,255,255], np.uint8)
# Limite superior de color Rojo de acuerdo
con HSV (espectro) lower_red2 =
[Link]([175,100,20], np.uint8) upper_red2
= [Link]([179,255,255],
np.uint8)

#Abrimos la imagen a identificar colores


imagenOriginal =
[Link]('/home/pi/Practica10/[Link]
')
#Transformacion de los colores de la imagen de
BGR a HSV
hsv =
[Link](imagenOriginal,cv2.COLOR_BGR2HS
V)

#Imagenes binarias de colores Amarillo, Verde


#Las imagenes del color identificado se hacen
blancas y el resto de color negro mask1 =
[Link](hsv, lower_yellow, upper_yellow)
#Imagenes binarias oara color rojo
# as imagenes del color identificado se hacen
blancas y el resto de color negro maskred1 =
[Link](hsv, lower_red1, upper_red1)
o10 – Laboratorio de Aplicaciones con Sistemas Embebidos
Preparatorio Nmaskred2 = [Link](hsv, lower_red2, 5
upper_red2)

#Sumamos imagenes binarias de colores Amarillo


y Verde
sumacolores1 = [Link](mask1, mask2)
#Sumamos imagenes binarias de colores Rojo1 y
Rojo2 sumacolores2 = [Link](maskred1,
maskred2) #Sumamos imagenes binarias de
colores Total
sumacolTotal = [Link](sumacolores1,
sumacolores2)

#Para la visualizacion
#(Imagen en BGR, Imagen en HSV, Imagen
Binarizada)
'''Esto lo que hace es que la región blanca
de sumacolTotal permita visualizar los
colores de imagenOriginal, mientras que la
región en negro se mantenga. ''' Figura 7. Imagen resultante a la identificación del color rojo, verde y
result = cv2.bitwise_and(imagenOriginal, amarillo.
imagenOriginal, mask=sumacolTotal) C. Consultar el principio de funcionamiento de las
operaciones morfológicas, tipos y sus aplicaciones. Investigar los
#Impresion de las imagenes [Link]('Imagen argumentos necesarios para realizar operaciones de dilatación y
Original', imagenOriginal) erosión de imágenes con las funciones dilate(), erode() y
[Link]('Binarizacion', sumacolTotal)
[Link]('Detecion de los colores', result)
morphologyEx().

[Link](0) [Link]() Las transformaciones morfológicas son algunas operaciones


simples basadas en la forma de la imagen, que normalmente se
aplican a imágenes binarias. Necesita dos entradas, una es nuestra
imagen original, la segunda se llama elemento estructurante o núcleo (kernel) que decide la naturaleza de la operación. [9]

Tipos de operaciones morfológicas:


Gráficas obtenidas: A continuación, se presentan los tipos de operaciones
morfológicas:

Erosión: En el proceso de erosionado un kernel se desliza


a través de la imagen. Un píxel de la imagen original (1 ó
0) sólo se considerará 1 si todos los píxeles que caen dentro
de la ventana del kernel son 1, de lo contrario se erosiona
(se hace a cero). Por tanto, todos los píxeles cerca de los
bordes de los objetos en la imagen serán descartados
dependiendo del tamaño del kernel. Como consecuencia, el
grosor o el tamaño de los objetos en primer plano
disminuye o, en otras palabras, la región blanca disminuye
en la imagen. [9]

Este procedimiento es útil para eliminar pequeños ruidos


blancos, separar dos objetos conectados, etc.
Figura 6. Imagen original de la paleta de colores.

Figura 8. Ilustración de la erosión de una imagen.

Sintaxis:
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 6

[Link](img,kernel,iterations = 1)
Donde:
- img: Es la imagen para procesar. Cierre: Es el opuesto de Apertura, es decir, dilatación
- kernel: Es el elemento estructurante que decide la seguida de erosión. Es útil para cerrar pequeños agujeros
naturaleza de operación (matriz). dentro de los objetos de primer plano, o pequeños puntos
negros en el objeto. [9]
Dilatación: Es lo opuesto a la erosión. Aquí, un elemento de
píxel es ‘1’ si al menos un píxel de la imagen de los que
caen dentro de la ventana del kernel es ‘1’. Por lo tanto, la
dilatación aumenta el tamaño de los objetos de primer
plano, es decir, la región blanca.
Normalmente, en casos como la eliminación del ruido, la
erosión es seguida de dilatación. La razón para esto es que,
aunque la erosión elimina los ruidos blancos también Figura 11. Ilustración del cierre de una imagen.
encoge los objetos. Por tanto, para recuperar el tamaño
inicial, este se dilata. La transformación de dilatación Sintaxis:
también es útil para unir partes rotas de un objeto. [9] cierre = [Link](img, cv2.MORPH_CLOSE,
kernel) Donde:
- img: Es la imagen para procesar.
- kernel: Es el elemento estructurante que decide la
naturaleza de operación (matriz).
- cv2.MORPH_CLOSE: Operación de cierre

Gradiente morfológico: Es la diferencia entre la dilatación


Figura 9. Ilustración de la dilatación de una imagen. y la erosión de una imagen. El resultado se verá como el
contorno del objeto. [9]
Sintaxis:
dilatacion = [Link](img,kernel,iterations
= 1)
Donde:
- img: Es la imagen para procesar.
- kernel: Es el elemento estructurante que decide la
naturaleza de operación (matriz).
Figura 12. Ilustración del gradiente morfológico de una imagen.
Apertura: Es otro nombre para erosión seguida de
dilatación. Como se explicó anteriormente, es útil para Sintaxis
eliminar el ruido. gradiente = [Link](img,
cv2.MORPH_GRADIENT, kernel) Donde:
- img: Es la imagen para procesar.
- kernel: Es el elemento estructurante que decide la
naturaleza de operación (matriz).
- cv2.MORPH_GRADIENT: Operación de gradiente
morfológico.

Aplicaciones [9]:
Figura 10. Ilustración de la apertura de una imagen.
Para imágenes binarias:
Sintaxis: Operaciones morfológicas:
apertura = [Link](img, - Dilatación
cv2.MORPH_OPEN, kernel) Donde: - Erosión - Transformada Hit-or-Miss -
- img: Es la imagen para procesar. Apertura y cierre.
- kernel: Es el elemento estructurante que decide la Aplicaciones:
naturaleza de operación (matriz). - Extracción de fronteras y componentes conexas.
- cv2.MORPH_OPEN: Operación de apertura. - Rellenado de regiones - Adelgazamiento y
engrosamiento - Esqueleto y poda. Para imágenes en
escala de grises Operaciones morfológicas:
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 7

- Dilatación
- Erosión
- Apertura y cierre Aplicaciones:
- Gradiente morfológico
- Transformada Top-Hat
- Texturas y granulometrías

D. Investigar la utilidad de las marcas de agua en una imagen


y desarrollar un script que permita añadir una marca de
agua en una imagen usando la función addWeigthed() de
OpenCV.

Una marca de agua digital es una información o señal insertada


en un contenido digital que se puede utilizar para determinar su
propiedad, saber quién lo creó y quién lo vendió, o asegurar su
integridad. El término marca de agua proviene de una analogía
con las imágenes grabadas en los billetes para garantizar su Figura 13. Ilustración de una imagen incluida marca de agua como
derecho de autor.
autenticidad, que son muy difíciles y costosas de reproducir, y
muchas veces son imperceptibles a simple vista, capaces de Función addWeigthed():
verse a la luz. La palabra watermark se usa en inglés y es
Es la encargada de fusionar imágenes del mismo tamaño y tipo,
equivalente a watermark en español, sin embargo, es práctica
además, de permitir la personalización y adición de efectos
común usar la traducción literal: water (water)-mark (marca).
especiales en la imagen resultante. Técnicamente, esta función
[10] realiza una suma ponderada de imágenes. [11]
La utilización de la marca sobre diferentes soportes, Sintaxis:
normalmente sobre papel o similares, es una técnica que se viene [Link](img1, overlay1, img2, output,
utilizando desde la antigüedad. Desde el surgimiento de esta overlay2)
técnica hasta el día de hoy, su uso más frecuente es para tratar
de proteger el derecho de autor o copyright de cada fotografía o Donde [11]:
imagen producida por cualquier persona. De esta forma, - img1: Es la imagen a la que se le va a insertar la marca
mediante el citado sello se pretende impedir el uso ilegal de de agua.
materiales creativos sin la autorización de sus creadores [10]. - overlay1: Son los píxeles correspondientes a la marca
de agua.
Al ser una marca de agua digital un conjunto de datos que se - img2: Puede ser una imagen o texto, mismos que son
insertan directamente sobre el material multimedia, esto correspondientes a la marca de agua.
significa que la marca implica una modificación del propio - overlay2: Son los píxeles correspondientes a la imagen
contenido. La señal digital es modificada y algunos de los bits resultante.
que representan el contenido son parcial o totalmente - output: Imagen resultante de la suma ponderada de la
cambiados. En ningún caso estas modificaciones deben suponer imagen original y la marca de agua.
una degradación de la calidad del material ni alterar las
condiciones en las que éste va a ser leído, escuchado o visto [10]. Codificación desarrollada:
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 8

#Escuela Politécnica Nacional


#Díaz_Orosco_Preparatorio9_Ejer3.4

#Script que permite agregar una marca de agua


a una imagen

#Importación de librerías #Para


trabajar con OpenCV import cv2

#Lectura de la imagen
imagen=[Link]('/home/pi/Practica10/auto.
png')
#Lectura de la imagen que será marca de agua
imagenMarca=[Link]('/home/pi/Practica10/
[Link]')
#Redefinimos la escala de la imagen normal
imgOriginal_escala=20/40
nuevoAncho=int([Link][1]*imgOriginal_e
scala)
nuevoAlto=int([Link][0]*imgOriginal_es
cala) nuevaDimension=(nuevoAncho, nuevoAlto)
redimensionandoImagen=[Link](imagen,
nuevaDimension,
interpolation=cv2.INTER_AREA)

#Redefinimos la escala de la imagen marca de


agua
imgMarca_escala=40/40
nuevoAnchoMarca=int([Link][1]*img
Marca_escala)
nuevoAltoMarca=int([Link][0]*imgM
arca_escala)
nuevaDimensionMarca=(nuevoAnchoMarca,
nuevoAltoMarca)
redimensionandoImagenMarca=[Link](imagen
Marca, nuevaDimensionMarca,
interpolation=cv2.INTER_AREA)

#Posición e inserción de la marca de agua en


la imagen #Imagen normal
imagenH,imagenW,_=[Link]
e
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 9

centroY=int(imagenH/2) centroX=int(imagenW/2) E. Utilizando la cámara del teléfono mediante la aplicación IP


Webcam y la librería Tesseract. Elaborar un script en Python que
#Imagen marca de agua permita realizar reconocimiento de texto (OCR) en vivo. El texto
imagenMarcaH,imagenMarcaW,_=redimensionandoI reconocido se presentará sobre el stream de video y se
[Link] almacenará en un archivo .txt. Adjuntar el código implementado
altoMarcaY=centroY-int(imagenMarcaH/2)
izquierdaMarcaX=centroX-int(imagenMarcaW/2) en texto plano y capturas que evidencien el correcto
bajoMarcaY=altoMarcaY+imagenMarcaH funcionamiento.
derechaMarcaX=izquierdaMarcaX+imagenMarcaW
Para realizar este programa se requiere de algunas librerías las
#Creacion del objeto marca de agua cuales se instalan con los siguientes comandos:
objetoMarca=redimensionandoImagen[altoMarcaY
:bajoMarcaY, izquierdaMarcaX:derechaMarcaX] sudo apt install tesseract-ocr
#Combinacion o superposicion de imagenes
#Ademas se define la máscara de transparencia
de la imagen
'''La nueva imagen es la fuente donde se
multiplica un valor alfa=1 y la segunda fuente
por el valor beta=0.3.
El valor gamma se agregará a este valor que
resulta de la multiplicación, para el
procesamiento u combinación de alfa en la
imagen'''

#FUciona dos imágenes personalizando los


efectos especiales, es con ello que se da la
transparencia de la marca
resultado=[Link](objetoMarca, 1,
redimensionandoImagenMarca, 0.3, 0.0) Figura 15. Instalación librería tesseract.
redimensionandoImagen[altoMarcaY:bajoMarcaY,
izquierdaMarcaX:derechaMarcaX]=resultado A continuación, se procede a instalar la misma librería en español
para no tener problemas al momento de compilar el programa, esto
#Creacion de la nueva imagen con marca de se realiza con ayuda del siguiente comando:
agua sudo apt install tesseract-ocr-spa
nuevaImagen='/home/pi/Practica10/nuevaImagen
.png'

#Impresion de las imagenes


[Link](nuevaImagen,
redimensionandoImagen)
[Link]('Imagen agregada una marca de
agua', redimensionandoImagen)
[Link](0) [Link]()
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 10

Gráfica obtenida:

Figura 16. Instalación librería tesseract- idioma español.

Codificación desarrollada:
#Escuela Politécnica Nacional
#Díaz_Orosco_Preparatorio9_Ejer3.5

import [Link]
import numpy as np
import cv2
import pytesseract
from pytesseract import Output

#Link de url obtenido mediante IP Webcam


url='[Link]
cap = [Link](url)
file = open('[Link]','w')

Figura 14. Gráfica con marca de agua personalizada.


Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 11

while True: IV. REFERENCIAS


#Linea para capturar cuadro por cuadro
[1] «Procesamiento de imágenes OpenCV,» Datapeaker.
ret, cuadro=[Link]()
#Utilización de libreria pytesseract en [Online]. Available at:
español d = [Link]
pytesseract.image_to_data(cuadro,lang='spa', opencvprocesamiento-de-imagenes-con-opencv/. [Último
output_type=[Link])
cant_cajas=len(d['text']) for i in
acceso: 15-08-2022].
range(cant_cajas):
# Proceso realizado con umbral de [2] DI GIUSEPPE G., (Agosto 19, 2019) «Detección de
60% de nivel de confianza objetos por colores en imágenes con Python y
if int(d['conf'][i]) > 60: OpenCV,» [Online]. Available at:
(text,x,y,w,h)=
(d['text'][i],d['left'][i],d['top'][i],d['wi [Link]
dth'][i],d['height'][i]) objetos-por-colores-en-im%C3%A1genes-conpython-y-
#Si no existe texto en la opencvc8d9b6768ff#:~:text=El%20espacio%20de%20c
imagen, no mostrar if text and olor%
[Link]()!="": #Linea
para leer el texto de la imagen 20HSV,en%20funci%C3%B3n%20de%20su%20color
cuadro=[Link](cuadro,(x,y),(x + w,y . [Último acceso: 15-08-2022].
+h),(0,255,0),2)
cuadro=[Link](cuadro,text,(x,y [3] SOLANO G., (Septiembre 14, 2019) «Detección de
10),cv2.FONT_HERSHEY_SIMPLEX,1.0,(0,0,255),3
)
colores en OpenCV – Python (En 4 pasos),» [Online].
#Impresión de texto Available at: [Link]
print(text) #Texto [Último acceso: 15-08-2022].
escrito en [Link]
[Link](text+'\n') [4] (Octubre 18, 2019) «Python OpenCV | método
#Mostrar resultados en una ventana nueva [Link](),» Geeks for Geeks. [Online]. Available at:
[Link]('cuadro',cuadro) if
[Link]
[Link](1)&0xFF==ord('q'): break
[Link]() [Link]() cv2cvtcolormethod/#:~:text=cvtColor()%20method%20i
[Link]() s%20used
,color%20space%20conversion%20codes%20below.
[Último acceso: 16-08-2022].

[5] «Resumen de las funciones de OpenCV comúnmente


utilizadas,» Programador Clic. [Online]. Available at:
[Link]
[Último acceso: 16-08-2022].

Gráfica obtenida: [6] «Introducción a OpenCV


inRange,» EDUCBA.
[Online]. Available at: [Link]
inrange/. [Último acceso: 16-08-2022].

[7] «OpenCV – Visión artificial de código abierto,»


[Online]. Available at:
[Link]
color__conversions.html#gga4e0972be5de079fed4e3a
10e24ef5ef0aa4a7f0ecf2e94150699e48c79139ee12.
[Último acceso: 16-08-2022].

[8] «Transformaciones morfológicas,» UniPython. [Online].


Available at: [Link]
Figura 17. Resultado obtenido mediante reconocimiento de texto
morfologicas/.
en vivo. [Último acceso: 16-08-2022].
Preparatorio No10 – Laboratorio de Aplicaciones con Sistemas Embebidos 12

[9] (Abril 22, 2017) «OpenCV Operaciones Morfológicas,»


Tutor de Programación. [Online]. Available at:
[Link]
[Link]#:~:text=Las%20dos%2
0operacione
s%20morfol%C3%B3gicas%20b%C3%A1sicas,elimi
n
ar%20ruido%20en%20im%C3%A1genes%20binarias
.
[Último acceso: 16-08-2022].

[10] «¿Qúe es una marca de agua?,» [Online]. Available at:


[Link]
watermarking. [Último acceso: 16-08-2022].

[11] SKAF E., «Personaliza tus fotos. Agrega una marca de


agua en tus imágenes automaticamente,» PostCron
[Online]. Available at:
[Link]
aguafacebook/#:~:text=Una%20marca%20de%20agu
a%20 es,imagen%20a%20la%20que%20protege.
[Último acceso: 16-08-2022].

También podría gustarte