Image data and operations


OpenCV (cv2) can be used to extract data from images and do operations on them. We demonstrate some examples of that below:

Image properties
We can extract the width, height and color depth using the code below:

import cv2
import numpy as np
 
# read image into matrix.
m =  cv2.imread("python.png")
 
# get image properties.
w,h,bpp = np.shape(m)
 
# print image properties.
print "width: " + str(w)
print "height: " + str(h)
print "bpp: " + str(bpp)

Access pixel data
We can access the pixel data of an image directly using the matrix, example:

import cv2
import numpy as np
 
# read image into matrix.
m =  cv2.imread("python.png")
 
# get image properties.
w,h,bpp = np.shape(m)
 
# print pixel value
y = 1
x = 1
print m[y][x]

To iterate over all pixels in the image you can use:

import cv2
import numpy as np
 
# read image into matrix.
m =  cv2.imread("python.png")
 
# get image properties.
h,w,bpp = np.shape(m)
 
# iterate over the entire image.
for py in range(0,h):
    for px in range(0,w):
        print m[py][px]

Image manipulation
You can modify the pixels and pixel channels (r,g,b) directly. In the example below we remove one color channel:

import cv2
import numpy as np
 
# read image into matrix.
m =  cv2.imread("python.png")
 
# get image properties.
h,w,bpp = np.shape(m)
 
# iterate over the entire image.
for py in range(0,h):
    for px in range(0,w):
        m[py][px][0] = 0
 
# display image
cv2.imshow('matrix', m)
cv2.waitKey(0)

To change the entire image, you’ll have to change all channels:   m[py][px][0], m[py][px][1], m[py][px][2].

Save image
You can save a modified image to the disk using:

cv2.imwrite('filename.png',m)