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

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

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

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

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

先上一張效果圖

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

圖四使用的是4點(diǎn)映射變換

簡(jiǎn)單介紹下原理

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

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

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

求這個(gè)矩陣 在opencv中直接就有方法

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

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

因?yàn)橹唤o三個(gè)點(diǎn)時(shí) 變換之后的圖其實(shí)只是原圖的等比縮放,并不能做到隨意映射的效果

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

代碼如下:

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

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]])         #三點(diǎn)映射
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]])    #四點(diǎn)映射
pts32 = np.float32([[0, 0], [cols - 1, 0], [50, rows - 1],[cols - 50,rows-50]])

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

dst = cv2.warpAffine(img,M,(rows+120,cols))            #三點(diǎn)映射的變換函數(shù)
dst2 = cv2.warpAffine(img,M2,(rows,cols))            
dst3 = cv2.warpPerspective(img,M3,(rows+40,cols+50))          #四點(diǎn)映射的變換函數(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-圖像處理(映射變換)詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論