OpenCV基於ORB算法實現角點檢測
本文實例為大傢分享瞭OpenCV基於ORB算法實現角點檢測的具體代碼,供大傢參考,具體內容如下
ORB算法是FAST算法和BRIEF算法的結合,ORB可以用來對圖像中的關鍵點快速創建特征向量,並用這些特征向量來識別圖像中的對象。
實例化ORB
orb = cv.ORB_create(nfeatures)
參數:
- nfeatures:特征點的最大數量
利用orb.detectAndCompute()檢測關鍵點並計算
kp, des = orb.detectAndCompute(gray, None)
參數:
- gray:進行關鍵點檢測的圖像(灰度圖像)
返回:
- kp:關鍵點信息,包括位置,尺度,方向信息
- des:關鍵點描述符,每個關鍵點BRIEF特征向量,二進制字符串。
將關鍵點檢測結果繪制在圖像上
cv.drawKeypoints(image, keypoints, outputimage, color, flags)
參數:
- image: 原始圖像
- keypoints:關鍵點信息,將其繪制在圖像上
- outputimage:輸出圖片,可以是原始圖像
- color:顏色設置,通過修改(b,g,r)的值,更改畫筆的顏色,b=藍色,g=綠色,r=紅色。
- flags:繪圖功能的標識設置
1、cv2.DRAW_MATCHES_FLAGS_DEFAULT:創建輸出圖像矩陣,使用現存的輸出圖像繪制匹配對和特征點,對每一個關鍵點隻繪制中間。
2、cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不創建輸出圖像矩陣,而是在輸出圖像上繪制匹配對。
3、cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:對每一個特征點繪制帶大小和方向的關鍵點圖形。
4、cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:單點的特征點不被繪制。
import cv2 as cv from matplotlib import pyplot as plt # 1.圖像讀取 img = cv.imread("1.jpg") gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 2.ORB角點檢測 # 2.1實例化ORB對象 orb = cv.ORB_create(nfeatures=1000) # 2.2 檢測關鍵點,並計算特征描述符 kp, des = orb.detectAndCompute(gray, None) print(des.shape) # 3.將關鍵點檢測在圖像上 img2 = cv.drawKeypoints(img, kp, None, flags=0) # 也可以添加 color 參數指定圖像顯示關鍵點的顏色,例如 img2 = cv.drawKeypoints(img, kp, None, color=(0, 0, 255), flags=0) # 4.繪制圖像 plt.figure(figsize=(10, 8), dpi=100) plt.imshow(img2[:, :, ::-1]) plt.xticks([]), plt.yticks([]) plt.show()
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Opencv Python實現兩幅圖像匹配
- 基於Python和openCV實現圖像的全景拼接詳細步驟
- Python OpenCV中的drawMatches()關鍵匹配繪制方法
- OpenCV-Python 實現兩張圖片自動拼接成全景圖
- Java OpenCV圖像處理之SIFT角點檢測詳解