"
Antes aprendíamos que la imagen en opencv es en realidad una matriz ndarray, y operamos en la matriz ndarray para operar en la imagen. Veamos primero la búsqueda de cortes, que es una operación muy común que usamos.
(1) Corte de matrices unidimensionales
Echemos un vistazo a la sintaxis de la división. Para matrices unidimensionales, podemos obtener los elementos 0 al 4 mediante las siguientes operaciones:
array [0: 5]
Por lo anterior, podemos saber que nuestra operación de corte se deja cerrada y se abre a la derecha. Podemos abreviar la operación de corte anterior:
array [: 5]
Si no establecemos el primer valor, significa cortar desde el principio. Por supuesto, también podemos omitir el segundo valor, lo que significa obtener el último elemento, como la siguiente operación:
array [3:]
Usemos un ejemplo práctico para ver la operación de corte:
importar numpy como np
Cree una matriz ndarray unidimensional con datos [0, 1, 2, 3, 4, 5, 6, 7]
matriz = np.array ([0, 1, 2, 3, 4, 5, 6, 7])
Toma de 0 a 4 elementos
imprimir (matriz [0: 5])
imprimir (matriz [: 5])
Lleva del 3 al último elemento
print(array[3:])
输出内容如下:
[0 1 2 3 4]
[0 1 2 3 4]
[3 4 5 6 7]`
Podemos resumir la operación de corte como:
Cerrar a la izquierda y abrir a la derecha
array[start: end-1]
Cuando comenzamos con el 0 y terminamos con el último, se puede omitir el valor correspondiente.
(2) Corte de matrices bidimensionales
En el procesamiento de imágenes, prestamos más atención al corte de matrices bidimensionales. Su sintaxis es muy similar a las matrices unidimensionales. Para facilitar la comprensión, utilizamos directamente imágenes para cortar, como la siguiente imagen:
nulo
La sintaxis para cortar una matriz bidimensional es la siguiente:
array[start:end-1, start:end-1]
Ahora debemos ser claros, la parte izquierda es la interceptación de la altura y la parte derecha es la intercepción de la anchura. Así que ahora quiero capturar la mitad izquierda de la imagen de la siguiente manera:
import cv2
Leer imagen
img = cv2.imread('xyql.jpg')
Obtenga el ancho de la imagen y divídalo por 2
width = img.shape[1]//2
Corta la imagen y toma la mitad izquierda
left = img[:, :width]
Tres pasos para mostrar imágenes
cv2.imshow('left', left)
cv2.waitKey(0)
cv2.destroyAllWindows()
El código para cortar es:
left = img[:, :width]
El de la izquierda es la altura de intercepción, necesitamos interceptar todos, por lo que ambos valores se pueden omitir. A la derecha, solo necesitamos interceptar la mitad izquierda, por lo que el valor de la izquierda se puede omitir, y el valor de la derecha es el ancho que calculamos anteriormente. La siguiente es la representación:
(2) np.zeros
np.zeros no tiene la diferencia anterior de unos, excepto que el contenido de su elemento es 0. Echemos un breve vistazo:
import numpy as np
img = np.zeros((5, 5), dtype=np.uint8)
print(img)
Para la comodidad de visualización, generamos directamente una matriz simple, el resultado de salida es el siguiente:
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
No entraré más en detalles.