jst*_*er7 5 opencv visualization keypoint
我正在学习OpenCV,目前我正在尝试理解存储在a中的基础数据,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);
Run Code Online (Sandbox Code Playgroud)
在C++中:
drawKeypoints( img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS );
Run Code Online (Sandbox Code Playgroud)
小智 5
我有一个类似的问题,想自定义绘制的点,决定分享我的解决方案,因为我想改变绘制的点的形状。
您可以根据需要更改 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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11203 次 |
最近记录: |