Guía de desarrollo de OpenCV-Python (1) --- Cómo iluminar la imagen

Representación básica de imágenes

Antes de darnos cuenta de cómo iluminar la imagen, debemos comprender la representación básica de la imagen. En las computadoras, las imágenes se dividen en tres tipos: imágenes binarias, imágenes en escala de grises e imágenes en color.

La imagen binaria se refiere a una imagen que solo contiene dos colores de blanco y negro. Por ejemplo, en el programa, para representar el número A, podemos usar el siguiente conjunto de datos en forma de cuadrícula para representarlo, como se muestra en la la siguiente figura:
Imagen binaria
donde 0 representa el negro, 1 representa el blanco, por lo que podemos determinar lo que queremos mostrar, pero no tiene color, ni sombra, y solo forma.

El segundo tipo de imagen es una imagen en escala de grises, que puede dibujar formas de caracteres aproximadas, estilos de contenido, etc. a través de sombras, pero no tiene color. El efecto es el mismo que el anterior, excepto que el valor de cada cuadrado no es 0 y 1, sino [0,255].

El último tipo es una imagen en color, que agrega color a la imagen gris. Aunque también puede ser representada por la imagen binaria de arriba, uno de los cuadrados no es 0 y 1, ni es [0,255], sino [[0,255] , [0,255], [0,255]]. De esta forma, se convierte en una matriz tridimensional.

Para el conocimiento básico de las imágenes, nos detendremos aquí. A continuación, cada una de las publicaciones de nuestro blog será una combinación de combate real y teoría.Este artículo explica principalmente la adición de imágenes y realiza el ajuste de brillo de las imágenes.

Dos operaciones de suma para imágenes

Para el procesamiento de imágenes, las operaciones de adición son operaciones relativamente básicas. El complejo procesamiento de imágenes se realiza a través de estos conocimientos básicos. Entonces, para el capítulo de apertura de OpenCV, presentaremos su operación de adición en detalle.

En el proceso de procesamiento de imágenes, OpenCV nos proporciona dos operaciones de adición a la imagen. Uno es procesar directamente a través del signo "+" y el otro es procesar a través de la función de suma.

"+" y agregar función

Antes de comprender el operador "+", debemos comprender la composición de los colores de imagen RGB. Como todos sabemos, ya sea rojo, azul o verde, el valor máximo establecido por el programa es 255. Entonces, ahora hay una pregunta difícil, ¿qué pasa si la suma es mayor que 255?

Para el operador "+", si es mayor que 255, debe tomar el resto. Por ejemplo, si el valor verde es 222, se deben agregar 55, por lo que el valor final no es 277, sino 21.

Este no es el caso con la función agregar. La adición de imágenes se realiza a través de agregar. No se puede decir que el resto se toma. Cualquier valor mayor que 255 después de la adición se establece en 255 de manera uniforme. Sabiendo esto, podemos usar la operación de suma de manera muy flexible.

Obtener una imagen

Ahora que entendemos la operación de suma de imágenes, obtengamos una imagen para la operación. El código es el siguiente:

import cv2
img = cv2.imread("1.jpg", 1)

Aquí, importamos la biblioteca OpenCV a través de import cv2, y luego obtenemos la imagen, aquí debemos prestar atención al segundo parámetro. El blogger aquí enumera específicamente una tabla para que todos comprendan el significado del segundo parámetro.

Valor numérico sentido
-1 Mantenga el formato original sin cambios (es decir, si es una imagen en escala de grises, entonces es una imagen en escala de grises, si es una imagen en color, entonces es un color)
0 Ajuste la imagen a una imagen en escala de grises de un solo canal
1 Ajuste la imagen a una imagen BGR de 3 canales, este es el valor más de cinco años
2 Cuando la profundidad de la imagen cargada es de 16 bits o 32 bits, se devuelve la imagen de profundidad correspondiente; de ​​lo contrario, se convierte en una imagen de 8 bits
4 Leer la imagen en cualquier formato de color posible
8 Cargar imagen usando el controlador gdal

Los anteriores son los valores de los parámetros que usamos comúnmente. Por supuesto, no solo estos parámetros son los únicos, sino que también hay una gran cantidad de parámetros para reducir el tamaño de la imagen después de obtener la imagen. Si está interesado, puedes consultar la documentación de desarrollo.

A continuación, mostraremos la imagen adquirida, el código específico es el siguiente:

import cv2

img = cv2.imread("1.jpg", -1)
cv2.imshow("图片", img)#显示图像,参数1为窗口标题,2为获取的图像,中文乱码后续讲解
cv2.waitKey()#等待用户按下
cv2.destroyAllWindows()#释放所有窗口

Los comentarios anteriores son lo suficientemente detallados, por lo que no los repetiré aquí. Después de ejecutar, el efecto mostrado es el siguiente:
Mostrar imagen

Ajustar el brillo de la imagen

Para ajustar el brillo de la imagen, generalmente usamos la función agregar, pero para distinguir la diferencia entre las dos adiciones, calculamos y mostramos la imagen al mismo tiempo. El código específico es el siguiente:

import cv2

img = cv2.imread("1.jpg", -1)
symbol_img=img+img
add_img=cv2.add(img,img)
cv2.imshow("图片1", symbol_img)
cv2.imshow("图片2", add_img)
cv2.waitKey()
cv2.destroyAllWindows()

Después de ejecutar, el efecto mostrado es como se muestra en la siguiente figura (izquierda "+", derecha agregar):
Comparado

El resto de la imagen de la izquierda es mayor que 255, lo que hace que los píxeles originalmente brillantes se vuelvan más oscuros. Y debido a que la imagen de la derecha usa la función agregar sin tomar el módulo, el valor mayor que 255 se asigna uniformemente a 255, por lo que cada detalle solo será más brillante que la imagen original.

Supongo que te gusta

Origin blog.csdn.net/liyuanjinglyj/article/details/113760323
Recomendado
Clasificación