前言
最近有些其他事情,一周未更新了霉旗,實在抱歉蛀骇。以后爭取擅憔,每周多更新幾次檐晕。雖然也不知道能有多少人看到,但是也算自己的一種堅持吧个榕!
1 旋轉(zhuǎn)
1.1 旋轉(zhuǎn)基本操作
旋轉(zhuǎn)的概念正如我們平常聽見的一樣:將圖片選裝x度芥喇。我們先通過多少度來旋轉(zhuǎn)圖片,然后我們將寫一個旋轉(zhuǎn)函數(shù)械馆。
import numpy as np #1
import argparse #2
import imutils #3
import cv2 #4
ap = argparse.ArgumentParser() #5
ap.add_argument("-i", "--image", required = True,
help = "Path to the image") #6
args = vars(ap.parse_args()) #7
image = cv2.imread(args["image"]) #8
cv2.imshow("Original", image) #9
(h, w) = image.shape[:2] #10
center = (w // 2, h // 2) #11
M = cv2.getRotationMatrix2D(center, 45, 1.0) #12
rotated = cv2.warpAffine(image, M, (w, h)) #13
cv2.imshow("Rotated by 45 Degrees", rotated) #14
M = cv2.getRotationMatrix2D(center, -90, 1.0) #15
rotated = cv2.warpAffine(image, M, (w, h)) #16
cv2.imshow("Rotated by -90 Degrees", rotated) #17
rotated = imutils.rotate(image, 180) #18
cv2.imshow("Rotated by 180 Degrees", rotated) #19
cv2.waitKey(0) #20
#1-9:
與前幾節(jié)一樣的操作霹崎,進行導包仿畸,然后顯示原始圖片朗和,但是需要注意的是在第三行 import imutils,還記得它是什么嗎?我們在上一節(jié)還詳細介紹過啊千埃。忘記了忆植,可以返回上一節(jié)看看。
#10-11:
在第10行中我們得到了圖像的寬和高耀里,然后我們通過"http://"將它們除以2取整來得到旋轉(zhuǎn)的中心拾氓。當然我們也可以不以中心為旋轉(zhuǎn)中心,這里為了方便房官。
#12:
正如我們定義一個矩陣來移動圖像一樣,我們還需要定義一個矩陣來旋轉(zhuǎn)圖像翰守,然而不同的是我們不是通過NumPy來構(gòu)造矩陣的蜡峰,而是通過:
cv2.getRotationMatrix2D()
第一個參數(shù):表示向以哪一點進行旋轉(zhuǎn)?這里就是圖像的中心
第二個參數(shù):表示我們希望旋轉(zhuǎn)的角度早像。這里為正45度肖爵,表示順時針旋轉(zhuǎn)45度
第三個參數(shù):表示圖像旋轉(zhuǎn)后的大小劝堪,這里設(shè)為1表示大小與原圖大小一致
#13-14:
通過cv2.warpAffine()方法揉稚,我們便可進行旋轉(zhuǎn)圖像的操作,第一個參數(shù)為原圖余境,第二個參數(shù)為旋轉(zhuǎn)矩陣灌诅,第三個參數(shù)為圖像(寬,高)的元組即舌,然后將旋轉(zhuǎn)后的圖像顯示出來
#15-17:
采用同樣的方法將圖像逆時針旋轉(zhuǎn)90度顽聂,然后展示出來
#18-20:
在第18行我們使用了:imutils這個自己寫的庫盯仪,然后調(diào)用了rotate()方法。第一個參數(shù)是需要操作的圖像耀石,第二個參數(shù)是要旋轉(zhuǎn)的度數(shù)娶牌。
1.2 自寫的函數(shù)庫
在imutils.py中我們自定義rotate函數(shù)
def rotate(image, angle, center=None, scale=1.0): #1
(h, w) = image.shape[:2] #2
if center is None: #3
center = (w // 2, h // 2) #4
M = cv2.getRotationMatrix2D(center, angle, scale) #5
rotated = cv2.warpAffine(image, M, (w, h)) #6
return rotated #7
#1-4:
我們的旋轉(zhuǎn)方法又四個參數(shù),第一個是圖像诗良,第二個是我們所希望旋轉(zhuǎn)的角度,我們還提供了兩個可選擇的變量:中心點和規(guī)模舞骆。中心點是我們希望我們的圖像圍繞哪一點旋轉(zhuǎn)径荔?如果,沒有給它賦值狈惫,我們會默認將圖像的中心點賦值給它胧谈。規(guī)模大小我們默認為1.0荸频,表示沒有任何大小的變化。
#5-7:
通過構(gòu)造我們的旋轉(zhuǎn)矩陣稳强,然后我們將旋轉(zhuǎn)后的結(jié)果返回和悦。
2 效果展示
轉(zhuǎn)載請注明出處:
CSDN:樓上小宇__home:http://blog.csdn.net/sty945
簡書:樓上小宇:http://www.reibang.com/u/1621b29625df