gpt4 book ai didi

python - 将 KeyPoint 保存为字符串并转换回 KeyPoint

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

我想将 KeyPoint 缓存在一个 JSON 文件中,然后稍后检索它们以用于 FlannBasedMatcher。有没有办法将 KeyPoint 转换为可以存储然后从 JSON 文件中检索的字符串或 float 组之类的东西?我认为这对于描述符应该没问题,因为它们看起来就像一个整数数组。

计算关键点

kp2, des2 = brisk.detectAndCompute(img2, None)

匹配器

matches = flann.knnMatch(des1,des2,k=2)

最佳答案

您可以将您的 KeyPoint 以字符串类型直接保存到 JSON 文件中:

import json
def save_2_jason(arr):
data = {}
cnt = 0
for i in arr:
data['KeyPoint_%d'%cnt] = []
data['KeyPoint_%d'%cnt].append({'x': i.pt[0]})
data['KeyPoint_%d'%cnt].append({'y': i.pt[1]})
data['KeyPoint_%d'%cnt].append({'size': i.size})
cnt+=1
with open('data.txt', 'w') as outfile:
json.dump(data, outfile)

以json格式保存到data.txt:

(kpt, desc) = brisk.detectAndCompute(img, None)
save_2_jason(kpt)

从 JSON 文件转换回 KeyPoint 需要将其更改为 cv2.KeyPoint 类:

import json
def read_from_jason():
result = []
with open('data.txt') as json_file:
data = json.load(json_file)
cnt = 0
while(data.__contains__('KeyPoint_%d'%cnt)):
pt = cv2.KeyPoint(x=data['KeyPoint_%d'%cnt][0]['x'],y=data['KeyPoint_%d'%cnt][1]['y'], _size=data['KeyPoint_%d'%cnt][2]['size'])
result.append(pt)
cnt+=1
return result

读取你保存的data.txt:

kpt_read_from_jason = read_from_jason()

关于python - 将 KeyPoint 保存为字符串并转换回 KeyPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56267675/

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