您好,登錄后才能下訂單哦!
如何在python中使用opencv實(shí)現(xiàn)圖像拼接?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
實(shí)現(xiàn)上述效果的步驟如下:
1. 采用surft特征檢測(cè)算法檢測(cè)兩幅圖像的關(guān)鍵特征點(diǎn);
2. 建立FLANN匹配器,采用目前最快的特征匹配(最近鄰搜索)算法FlannBasedMatcher匹配關(guān)鍵點(diǎn)
3.從所匹配的全部關(guān)鍵點(diǎn)中篩選出優(yōu)秀的特征點(diǎn)(基于距離篩選)
4. 根據(jù)查詢圖像和模板圖像的特征描述子索引得出仿射變換矩陣
5. 獲取左邊圖像到右邊圖像的投影映射關(guān)系
6. 透視變換將左圖像放在相應(yīng)的位置
7. 將有圖像拷貝到特定位置完成拼接
先放python下利用opencv 進(jìn)行圖像拼接的代碼,環(huán)境為python2.7+opencv2:
#coding: utf-8 import numpy as np import cv2 leftgray = cv2.imread('1.jpg') rightgray = cv2.imread('2.jpg') hessian=400 surf=cv2.SURF(hessian) #將Hessian Threshold設(shè)置為400,閾值越大能檢測(cè)的特征就越少 kp1,des1=surf.detectAndCompute(leftgray,None) #查找關(guān)鍵點(diǎn)和描述符 kp2,des2=surf.detectAndCompute(rightgray,None) FLANN_INDEX_KDTREE=0 #建立FLANN匹配器的參數(shù) indexParams=dict(algorithm=FLANN_INDEX_KDTREE,trees=5) #配置索引,密度樹(shù)的數(shù)量為5 searchParams=dict(checks=50) #指定遞歸次數(shù) #FlannBasedMatcher:是目前最快的特征匹配算法(最近鄰搜索) flann=cv2.FlannBasedMatcher(indexParams,searchParams) #建立匹配器 matches=flann.knnMatch(des1,des2,k=2) #得出匹配的關(guān)鍵點(diǎn) good=[] #提取優(yōu)秀的特征點(diǎn) for m,n in matches: if m.distance < 0.7*n.distance: #如果第一個(gè)鄰近距離比第二個(gè)鄰近距離的0.7倍小,則保留 good.append(m) src_pts = np.array([ kp1[m.queryIdx].pt for m in good]) #查詢圖像的特征描述子索引 dst_pts = np.array([ kp2[m.trainIdx].pt for m in good]) #訓(xùn)練(模板)圖像的特征描述子索引 H=cv2.findHomography(src_pts,dst_pts) #生成變換矩陣 h,w=leftgray.shape[:2] h2,w1=rightgray.shape[:2] shft=np.array([[1.0,0,w],[0,1.0,0],[0,0,1.0]]) M=np.dot(shft,H[0]) #獲取左邊圖像到右邊圖像的投影映射關(guān)系 dst_corners=cv2.warpPerspective(leftgray,M,(w*2,h))#透視變換,新圖像可容納完整的兩幅圖 cv2.imshow('tiledImg1',dst_corners) #顯示,第一幅圖已在標(biāo)準(zhǔn)位置 dst_corners[0:h,w:w*2]=rightgray #將第二幅圖放在右側(cè) #cv2.imwrite('tiled.jpg',dst_corners) cv2.imshow('tiledImg',dst_corners) cv2.imshow('leftgray',leftgray) cv2.imshow('rightgray',rightgray) cv2.waitKey() cv2.destroyAllWindows()
看完上述內(nèi)容,你們掌握如何在python中使用opencv實(shí)現(xiàn)圖像拼接的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。