Python OpenCV: obtención y configuración de píxeles

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *