En este artículo, discutiremos cómo obtener y configurar píxeles a través de OpenCV en Python.
La imagen se compone de píxeles. Un píxel se denotará como una array. Los 3 enteros representan la intensidad de rojo, verde, azul en el mismo orden. P.ej. [0,0,0] en modo RGB representa el color negro. Hay otros modos también-
- VHS
- escala de grises
- CMA
La imagen se puede leer usando la función imread() que devuelve la array de píxeles (el modo predeterminado es RGB).
Imagen utilizada:
Sintaxis:
For Image shape: image.shape For getting a pixel: image[row][col] For setting a pixel: image[row][col] = [r,g,b]
Ejemplo 1 : código de Python para mostrar detalles de la imagen
Python3
# import cv2 module import cv2 # resd the image img = cv2.imread('image.png') # shape prints the tuple (height,weight,channels) print(img.shape) # img will be a numpy array of the above shape print(img)
Producción:
(225, 225, 3) [[[ 87 157 14] [ 87 157 14] [ 87 157 14] ... [ 87 157 14] [ 87 157 14] [ 87 157 14]] [[ 87 157 14] [ 87 157 14] [ 87 157 14] ... [ 87 157 14] [ 87 157 14] [ 87 157 14]] ... [[ 72 133 9] [ 72 133 9] [ 72 133 9] ... [ 87 157 14] [ 87 157 14] [ 87 157 14]] [[ 72 133 9] [ 72 133 9] [ 72 133 9] ... [ 87 157 14] [ 87 157 14] [ 87 157 14]]]
Aquí hay 225*225 píxeles y cada píxel es una array de 3 enteros (rojo, verde, azul).
Ejemplo 2 : en este ejemplo, el píxel único se puede extraer mediante la indexación.
Python3
import cv2 # read the image img = cv2.imread('image.png') # this is pixel of 0th row and 0th column print(img[0][0])
Producción:
[ 87 157 14]
Ejemplo 3 : código de Python para hacer la cruz negra en la imagen.
Para eso extraeremos todos (i,j) tales que i==j o i+j == ancho de imagen y para todos los píxeles con índice (i,j), el valor del píxel se establecerá en [0,0, 0].
Python3
# import the cv2 package import cv2 # read the image img = cv2.imread('image.png') for i, row in enumerate(img): # get the pixel values by iterating for j, pixel in enumerate(img): if(i == j or i+j == img.shape[0]): # update the pixel value to black img[i][j] = [0, 0, 0] # display image cv2.imshow("output", img) cv2.imwrite("output.png", img)
Producción:
Ejemplo 4: obtenga una escala de grises, luego el píxel será solo un número que representa la intensidad del blanco.
Python3
import cv2 img = cv2.imread('image.png', 0) # shape prints the tuple (height,weight,channels) print("image shape = ", img.shape) # img will be a numpy array of the above shape print("image array = ", img) print("pixel at index (5,5): ", img[5][5])
Imagen en escala de grises:
Producción:
image shape = (225, 225) image array = [[106 106 106 ... 106 106 106] [106 106 106 ... 106 106 106] [106 106 106 ... 106 106 106] ... [ 88 88 88 ... 106 106 106] [ 88 88 88 ... 106 106 106] [ 88 88 88 ... 106 106 106]] pixel at index (5,5): 106
Publicación traducida automáticamente
Artículo escrito por bhavyajain4641 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA