真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在python中使用opencv實(shí)現(xiàn)圖像拼接-創(chuàng)新互聯(lián)

如何在python中使用opencv實(shí)現(xiàn)圖像拼接?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),依蘭企業(yè)網(wǎng)站建設(shè),依蘭品牌網(wǎng)站建設(shè),網(wǎng)站定制,依蘭網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,依蘭網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

實(shí)現(xiàn)上述效果的步驟如下:

1. 采用surft特征檢測算法檢測兩幅圖像的關(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,閾值越大能檢測的特征就越少
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ù)量為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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)頁標(biāo)題:如何在python中使用opencv實(shí)現(xiàn)圖像拼接-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/dcpcpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部