Python OpenCV中的drawMatches()關鍵匹配繪制方法
作用說明
該方法被用於繪制關鍵點的匹配情況。我們看到的許多匹配結果都是使用這一方法繪制的——一左一右兩張圖像,匹配的關鍵點之間用線條鏈接。
函數原型
cv.drawMatches( img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg cv.drawMatches( img1, keypoints1, img2, keypoints2, matches1to2, outImg, matchesThickness[, matchColor[, singlePointColor[, matchesMask[, flags]]]] ) -> outImg cv.drawMatchesKnn( img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
參數詳解
- img1:第一張原始圖像。
- keypoints1:第一張原始圖像的關鍵點。
- img2:第二張原始圖像。
- keypoints2:第二張原始圖像的關鍵點。
- matches1to2:從第一個圖像到第二個圖像的匹配,這意味著keypoints1[i]在keypoints2[Matches[i]中有一個對應的點。
- outImg:繪制結果圖像。
- matchColor:匹配連線與關鍵點點的顏色,當
matchColor==Scalar::all(-1)
時,代表取隨機顏色。 - singlePointColor:沒有匹配項的關鍵點的顏色,當
singlePointColor==Scalar::all(-1)
時,代表取隨機顏色。 - matchesMask:確定繪制哪些匹配項的掩碼。如果掩碼為空,則繪制所有匹配項。
- flags:繪圖功能的一些標志。具體有:
- cv.DRAW_MATCHES_FLAGS_DEFAULT
- cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS
- cv.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG
- cv.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS 代碼實例
def bf_match(img_path1, img_path2): # 讀取兩張圖像 img1 = cv2.imread(img_path1, cv2.IMREAD_GRAYSCALE) img2 = cv2.imread(img_path2, cv2.IMREAD_GRAYSCALE) # 計算兩張圖像的SIFT描述符 kp1, des1, _ = sift_algorithm(img_path1) kp2, des2, _ = sift_algorithm(img_path2) # 創建BFMatcher實例 bf = cv2.BFMatcher() # 獲得最佳匹配 matches = bf.match(des1, des2) # 繪制匹配結果 # matches = sorted(matches, key = lambda x:x.distance) match_result = cv2.drawMatches(img1, kp1, img2, kp2, matches, None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS) # 顯示繪制結果 plt.imshow(match_result) plt.show() return match_result
結果
到此這篇關於Python OpenCV中的drawMatches()關鍵匹配繪制方法的文章就介紹到這瞭,更多相關Python OpenCV drawMatches() 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 基於Python和openCV實現圖像的全景拼接詳細步驟
- Opencv Python實現兩幅圖像匹配
- OpenCV基於ORB算法實現角點檢測
- OpenCV-Python 實現兩張圖片自動拼接成全景圖
- python opencv實現圖像配準與比較