[英]Visualizing OpenCV KeyPoints
我正在學習 OpenCV,目前我正在嘗試了解存儲在KeyPoint
的基礎數據,以便我可以更好地將這些數據用於我正在處理的應用程序。
到目前為止,我一直在瀏覽這兩頁:
http://docs.opencv.org/doc/tutorials/features2d/feature_detection/feature_detection.html
但是,當我按照教程使用drawKeypoints()
,這些點的大小和形狀都相同,並且使用看似任意的顏色繪制。
我想我可以遍歷每個關鍵點的屬性:畫一個圓圈,畫一個箭頭(用於角度),根據響應給它一個顏色,等等。但我認為必須有更好的方法。
是否有一個內置的方法或其他方法類似drawKeypoints()
這將幫助我更有效地可視化的KeyPoints
的圖像?
是的,有執行任務的方法。 正如文檔中所說
對於每個關鍵點,將繪制關鍵點周圍具有關鍵點大小和方向的圓圈
如果您使用的是 Java,您可以簡單地指定關鍵點的類型:
Features2d.drawKeypoints(image1, keypoints1, imageOut2,new Scalar(2,254,255),Features2d.DRAW_RICH_KEYPOINTS);
在 C++ 中:
drawKeypoints( img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS );
我有一個類似的問題,想自定義繪制的點,決定分享我的解決方案,因為我想改變繪制的點的形狀。
您可以根據需要更改 cv2.circle 的行。 im 是要繪制點的輸入圖像,keyp 是要繪制的關鍵點,col 是線條顏色,th 是圓邊緣的粗細。
import cv2
import numpy as np
import matplotlib.pyplot as plt
def drawKeyPts(im,keyp,col,th):
for curKey in keyp:
x=np.int(curKey.pt[0])
y=np.int(curKey.pt[1])
size = np.int(curKey.size)
cv2.circle(im,(x,y),size, col,thickness=th, lineType=8, shift=0)
plt.imshow(im)
return im
imWithCircles = drawKeyPts(origIm.copy(),keypoints,(0,255,0),5)
您可以遍歷檢測到的關鍵點向量,並在每個KeyPoint.pt上繪制(例如)一個圓,其半徑類似於KeyPoint.size和相對於KeyPoint.response 的顏色。這當然只是一個示例; 您可以根據 KeyPoint 的倍頻程和角度編寫更復雜的繪圖函數(如果您的檢測器提供該輸出)。
希望這可以幫助。
你好,這是我的代碼@Alex
def drawKeyPts(im, keyp, col, th):
draw_shift_bits = 4
draw_multiplier = 1 << 4
LINE_AA = 16
im = cv2.cvtColor(im, cv2.COLOR_GRAY2BGR)
for curKey in keyp:
center = (int(np.round(curKey.pt[0]*draw_multiplier)), int(np.round(curKey.pt[1]*draw_multiplier)))
radius = int(np.round(curKey.size/2*draw_multiplier))
cv2.circle(im, center, radius, col, thickness=th, lineType=LINE_AA, shift=draw_shift_bits)
if(curKey.angle != -1):
srcAngleRad = (curKey.angle * np.pi/180.0)
orient = (int(np.round(np.cos(srcAngleRad)*radius)), int(np.round(np.sin(srcAngleRad)*radius)))
cv2.line(im, center, (center[0]+orient[0], center[1]+orient[1]), col, 1, LINE_AA, draw_shift_bits)
cv2.imshow('name1', im)
cv2.waitKey()
return im
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.