OpenCV學習筆記 幾何變換

2021-08-20 10:17:25 字數 3462 閱讀 9200

擴充套件縮放只是改變影象的大小。opencv提供函式cv.resize()實現這個功能。在縮放時推薦使用cv.inter_area,在擴充套件時推薦使用cv.inter_cubic(慢)和cv.inter_linear。

#擴充套件縮放

defresize_demo(img):

#使用縮放因子

res = cv.resize(img,none, fx=2, fy=2, interpolation=cv.inter_cubic)

cv.imshow('resize 2', res)

height, width = img.shape[:2]

#指定輸出影象大小,輸出影象的尺寸必須是整數

平移就是將物件換乙個位置。如果要沿(x, y)方向移動,移動的距離是(tx, ty),使用numpy構建乙個2x3矩陣(資料型別是float32),

m= [[1 0 tx]

[0 1 ty]] ,下面的例子被移動了(100,50)個畫素

#平移

對乙個影象旋轉角度θ,需要使用到下面形式的旋轉矩陣。

#旋轉

defrotate_demo(img):

rows, cols = img.shape[:2]

#getrotationmatrix2d(旋轉中心,旋轉角度, 旋轉影象縮放大小)

函式:getrotationmatrix2d(center, angle, scale),第乙個引數是旋轉中心,第二個為旋轉角度,第三個為旋轉後的影象的縮放因子。可以通過設定旋轉中心,縮放因子,以及縮放因子來防止旋轉後超出邊界的問題。opencv中逆時針旋轉,角度大小為正。

在仿射變換中,

原圖中所有的平行線在結果影象中同樣平行。為了建立這個矩陣我們需要在原影象中找到三個點,以及它們在輸出影象中的位置,然後cv.getaffinetransform會建立乙個2*3的矩陣,這個矩陣傳給cv.warpaffine()得到旋轉後的影象。

#仿射變換

defwarpaffine_demo(img):

rows, cols = img.shape[:2]

#在原影象上的座標

pts1 = np.float32([[50,50],[200,50],[50,200]])

#在輸出影象上的座標

pts2 = np.float32([[10,100], [200, 50], [100, 250]])

#會建立乙個2x3的矩陣

函式warpaffine(src, m, dsize, dst=none, flags=none, bordermode=none, bordervalue=none),

src是輸入影象,

m是2x3的變換矩陣,

dsize是輸出影象指定尺寸,

flags:插值演算法識別符號,預設值為inter_linear

bordermode:邊界畫素模式,預設值為border_constant

bordervalue:邊界取值,預設值為0

對於透視變換,我們需要乙個3*3變換矩陣。

在變換前後直線還是直線。要構建這個矩陣,需要在輸入影象上找到4個點,以及它們在輸出影象上對應的位置。這四個點中的任意三個不能共線。

#透視變換

defperspective_demo(img):

rows, cols = img.shape[:2]

#輸入影象上的四個點,任意三個點不能共線

pts1 = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])

#輸出影象上的四個點

openCV幾何變換

影象的幾何變換 移動,旋轉,仿射變換等 主要的函式 cv2.getperspectivetransfrom 1.擴充套件縮放 提供函式是 cv2.resize src,dst,interpolation cv inter linear 在函式cv2.resize 中尺寸大小可以自己設定,也可以使用縮...

OpenCV 幾何變換

使用cv2.resize 來實現 縮放因子 縮放 cv2.inter area 擴充套件 cv2.inter linera cv2.inter cubic 下面的none本該是輸出的尺寸,但這裡因為後面我們設定了縮放因子 res1 cv2.resize img,none,fx 2,fy 2,inte...

OpenCV學習幾何變換 座標對映

opencv中提供重對映想換操作,重對映是指把乙個影象中乙個位置的畫素通過對映關係轉到另一影象指定位置。remap重對映 include include include includeusing namespace std int main 重對映操作 remap srcimage,resultim...