Accessing rows of images

Accessing rows of images#

We have learned that images displayed on digital screens comprise grids of pixels, where each pixel is associated with a single color. Also, we have seen that the color information of pixels in images can be represented as 2D lists of tuples. From now, we will cover how to handle images using for loops.

The following 3X4 image is given as a 2D list our_image.

../../../_images/rows.png

The value of each RGB pixel is as follows:

(0,0,0)   (0,80,0)   (0,160,0)   (0,240,0)
(120,0,0) (120,80,0) (120,160,0) (120,240,0)
(240,0,0) (240,80,0) (240,160,0) (240,240,0)

Here is how our_image is shown in Python.

>>> our_image
[[(0, 0, 0), (0, 80, 0), (0, 160, 0), (0, 240, 0)],
[(120, 0, 0), (120, 80, 0), (120, 160, 0), (120, 240, 0)],
[(240, 0, 0), (240, 80, 0), (240, 160, 0), (240, 240, 0)]]

As you may have guessed from the table of the pixel values, the R component of our_image increases by 120 from the top row to the bottom row, and the G component increases by 80 from the leftmost column to the rightmost column. And the B component is 0 for every pixel.

Now, your favorite color is red, and you would like to print the values of the bottom row, as that row has highest R components. Then, the coordinates you want to access are (2,0), (2,1), (2,2), (2,3). You may print the RGB values by just using print() multiple times as

print(our_image[2][0])
print(our_image[2][1])
print(our_image[2][2])
print(our_image[2][3])

which prints the following output.

(240, 0, 0)
(240, 80, 0)
(240, 160, 0)
(240, 240, 0)

However, instead of manually repeating to type print() multiple times, we can use a for loop.

for column in range(4):
    print(our_image[2][column])

Since we are dealing with the bottom row, the first index of our_image is set to 2. The variable column takes values among 0,1,2,3 for each iteration of the loop so that every pixel in that row can be handled in turn. This code results in the same outcome as follows:

(240, 0, 0)
(240, 80, 0)
(240, 160, 0)
(240, 240, 0)

Imagine we have a 1000x1000 image. It’s much better to write a 2-line for loop instead of typing print() 1000 times!