gpt4 book ai didi

python - 在 Python 中显示具有较少关键点的 Brisk 关键点

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:31 27 4
gpt4 key购买 nike

我在 python 中有以下代码

import cv2
import numpy as np

def save_keypoints(image_path, type_image):
img = cv2.imread(image_path)
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
kp, descriptors =cv2.BRISK_create(10).detectAndCompute(gray,None)
mg=cv2.drawKeypoints(gray, kp, None,
flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imwrite('brisk_keypoints-'+ type_image+'.jpg',mg)

if __name__=="__main__":
save_keypoints("original.bmp" ,"original")
save_keypoints("fake600.bmp" ,"fake600")
save_keypoints("fake1200.bmp" ,"fake1200")
save_keypoints("fake2400.bmp" ,"fake2400")

基本上,代码将保存检测到 BRISK 关键点的图像。但是,以下是在四张图片中应用此代码的结果:

enter image description here enter image description here enter image description here enter image description here

虽然图像不同(我可以在一袋视觉词方法中使用这些 BRISK 描述符轻松区分它们),但似乎在所有这四张图像中检测到的关键点在视觉上是相同的,或者可能是大量的同心圆使观众感到困惑。如何减少显示的关键点数量,以便我可以通过这些描述符看到这些图像有何不同?

最佳答案

理想的答案是@Silencer 建议过滤关键点。有几种方法可以实现这一点。如果调试的话,可以看到ndarrayKeypoints中包含了哪些信息。信息应该类似于 this .因此,使用它,您可以根据响应(我建议从它开始)或根据 Keypoints 的坐标对 Keypoints 进行排序。响应基本上是关键点有多好,粗略地说,特定关键点的角落性有多好。

例如:

基于索引

keypoints = detector.detect(frame) #list of keypoints
x = keypoints[i].pt[0] #i is the index of the Keypoint you want to get the position
y = keypoints[i].pt[1]

您可以在 lamda 表达式(而不是循环)或 numpy 函数中使用它来进行快速优化。同样,对于响应,你可以这样做:

res = keypoints[i].response

我看到 BRISK 的响应从 31 到 320,但你必须为你的图像找到最佳值(value)。

希望对您有所帮助!

关于python - 在 Python 中显示具有较少关键点的 Brisk 关键点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com