Вы можете сохранить 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)
Сохранить в data.txt в формате json:
(kpt, desc) = brisk.detectAndCompute(img, None)
save_2_jason(kpt)
Преобразование обратно в KeyPoint из файлаФайл JSON необходимо изменить на класс 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()