欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解python-圖像處理(映射變換)

 更新時間:2019年03月22日 09:38:44   作者:劍峰隨心  
這篇文章主要介紹了python-圖像處理(映射變換),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

做計算機(jī)視覺方向,除了流行的各種深度學(xué)習(xí)算法,很多時候也要會基礎(chǔ)的圖像處理方法。

記錄下opencv的一些操作(圖像映射變換),日后可以方便使用

先上一張效果圖

圖二和圖三是同一種方法,只是變換矩陣不同,都是3點映射變換

圖四使用的是4點映射變換

簡單介紹下原理

圖像都知道是3維(通道)的矩陣,前兩維就是由1字節(jié)(0-255)數(shù)字填充的二維數(shù)組。數(shù)字大小代表顏色的深淺。

我們把變換前的原圖作為x和y。變換后的圖為u和v。將[x,y,1]乘上變換矩陣就可以得到對應(yīng)的新的u和v。不同的變換矩陣有不同的作用(不同的變換方式)

所以現(xiàn)在就是求不同變換對應(yīng)的不同的變換矩陣的過程

求這個矩陣 在opencv中直接就有方法

只需提供原圖的三個點和你要變換之后的三個點的映射位置(3個原圖點,3個映射點)就可以求出這個變換矩陣

當(dāng)然了 你會發(fā)現(xiàn)不管怎么調(diào)整映射點 都不能任意變換

因為只給三個點時 變換之后的圖其實只是原圖的等比縮放,并不能做到隨意映射的效果

這里opencv也提供了 四個點和四個映射的方法 求出對應(yīng)的變換矩陣 ,最終得到任意映射的效果

代碼如下:

# coding=gbk
import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號

img=cv2.imread(r"test6.jpg")
img = img[:,:,[2,1,0]]
cols,rows,ch=img.shape

pts1 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]])         #三點映射
pts2 = np.float32([[0, 0], [cols - 1, 0], [80, rows - 1]])
pts21 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]])
pts22 = np.float32([[cols * 0.2, rows * 0.1], [cols * 0.9, rows * 0.2], [cols * 0.1, rows * 0.9]])
pts31 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1],[cols - 1,rows-1]])    #四點映射
pts32 = np.float32([[0, 0], [cols - 1, 0], [50, rows - 1],[cols - 50,rows-50]])

M = cv2.getAffineTransform(pts1,pts2)              #求三點映射的變換矩陣
M2= cv2.getAffineTransform(pts21,pts22)
M3 = cv2.getPerspectiveTransform(pts31,pts32)            #求四點映射的變換矩陣

dst = cv2.warpAffine(img,M,(rows+120,cols))            #三點映射的變換函數(shù)
dst2 = cv2.warpAffine(img,M2,(rows,cols))            
dst3 = cv2.warpPerspective(img,M3,(rows+40,cols+50))          #四點映射的變換函數(shù)

plt.subplot(221)
plt.imshow(img)
plt.title("原圖")
plt.subplot(222)
plt.imshow(dst)
plt.title("投影變換")
plt.subplot(223)
plt.imshow(dst2)
plt.title("仿射原圖變換")
plt.subplot(224)
plt.imshow(dst3)
plt.title("仿射不規(guī)則變換")

plt.show()

以上所述是小編給大家介紹的python-圖像處理(映射變換)詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論