上一章有說到,當你從外部匯入圖片存進自訂變數時,存在變數裡的並不是我們直觀想像的真實圖片,而是一個由row和col組成的二維陣列,每一個陣列元素存放的都是RGB三色混雜的像素點,像素點越多(陣列越大)圖片也就越清晰。
而要做到翻轉圖片這件事,只要對這個概念進行延伸,就會知道翻轉圖片等同轉置陣列。
import cv2
import numpy as np
做完前置動作,我們來嘗試用numpy的指令來轉置矩陣吧!
作為以陣列處理的高效和便利聞名的Numpy函式庫,轉置矩陣自然也在他的能力之內,它為使用者提供了一個相當方便的函式:rot90。
rot90主要應用在二維陣列的轉置操作,假如現在有個存入了矩陣的變數:
a=[1,2,3;4,5,6;7,8,9]
執行print(a)之後能看到:
a =
1 2 3
4 5 6
7 8 9
a變數內明確存放了3x3的二維矩陣,現在我們試著將a變數進行轉置:
b=rot90(a)
執行print(b)之後能看到:
b =
3 6 9
2 5 8
1 4 7
變數a的陣列確實經過90°旋轉之後存到變數b,但要注意的是它做的是逆時針轉換,如果想要順時針進行旋轉的話只要在後面加上:
c=rot90(a,-1)
執行print(c)之後能看到:
c =
7 4 1
8 5 2
9 6 3
同樣的,如果想將圖片轉成180°:
c=rot90(a,2)
也可以寫成:
c=rot90(a,-2)
兩者等效。
理解了上述操作,請試著對圖片做做看!