opencv python 4 基本變換

opencv python 4 基本變換

改變色彩空間

cv2.cvtColor()函數可以將圖像在各個色彩空間之間變換,如RGB,BGR,灰度圖像,YUV,HSV等。

dst = cv2.cvtColor(src, code[, dst[, dstCn]])
  • dst:輸出圖像
  • src:輸入圖像
  • code:轉換方式
  • dstCn:輸出圖像通道數,默認爲0,根據輸入圖像和轉換方式自動生成
import cv2

img = cv2.imread('a.jpg')
img_cvt = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('image', img_cvt)
cv2.waitKey()

opencv提供了超過150種色彩空間轉換方法:

f = [i for i in dir(cv2) if i.startswith('COLOR_')]
print(f)

輸出爲所有轉換方式。

改變大小

cv2.resize()函數對圖像作制定的大小變換。

dst = cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
  • dst:輸出圖像
  • src:輸入圖像
  • dsize:輸出圖像大小,若爲0則根據fx,fy進行變換
  • fx:相對於原圖像的x方向縮放倍數
  • fy:相對於原圖像的y方向縮放位數
  • interpolation:變換方式,包括:

img = cv2.imread('a.jpg')
height, width = img.shape[:2]

res = cv2.resize(img, (2 * width, 2 * height), interpolation = cv2.INTER_CUBIC)
cv2.imshow('image', res)
cv2.waitKey()

也可不直接設定轉換後的大小而是通過設定fx和fy參數來設置轉換的倍數。

res = cv2.resize(img, None, fx = 2, fy = 2, interpolation = cv2.INTER_CUBIC)

圖像旋轉

對圖像進行旋轉操作首先要使用cv2.getRotationMatrix2D()計算旋轉矩陣。

retval = cv2.getRotationMatrix2D(center, angle, scale)
  • center:中心點
  • angle:旋轉角度
  • scale:縮放倍數

獲取旋轉矩陣後再使用cv2.warpAffine()進行仿射變換。

dst = cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
  • dst:輸出圖像
  • src:輸入圖像
  • M:2x3的變換矩陣
  • dsize:輸出圖像大小
  • flags:插值方式,默認爲線性插值INTER_LINEAR
  • borderMode:設定邊界的方式,默認爲BORDER_CONSTANT
  • borderValue:若設定邊界爲常量的取值,默認爲0
img = cv2.imread('a.jpg')
h, w = img.shape[:2]
M = cv2.getRotationMatrix2D((w / 2, h / 2), 90, 1)
dst = cv2.warpAffine(img, M, (w, h))

cv2.imshow('img', dst)
cv2.waitKey()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章