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:
Related courses:
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.
h,w,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.
h,w,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)