pickle保存cv2.KeyPoint失败问题

pickle保存cv2.KeyPoint失败问题

pickle不能保存自定义的类型

可以将KeyPoint转为字典保存后再读取

import numpy as np
import cv2
import pickle

#示例save_kps.save_kps(kps,des,'kp1','des1')
def save_kps(kps,des,kname,dname):
    kps_trs = []
    for kp in kps:
        kps_trs.append({'pt': kp.pt, 'size': kp.size, 'angle': kp.angle, 'octave': kp.octave,
                        'class_id': kp.class_id, 'response': kp.response})
    with open(kname+'.pickle', 'wb') as file:
        pickle.dump(kps_trs, file)
    np.save(dname, des)

#示例save_kps.save_kps('kps.pickle','des.npy')
def load_kps(kps_path,des_path):
    with open(kps_path, 'rb') as file:
        kps_loaded = pickle.load(file)
    kps_f = []
    for tr in kps_loaded:
        kps_f.append(cv2.KeyPoint(x=tr['pt'][0], y=tr['pt'][1], size=tr['size'], angle=tr['angle'],
                                  response=tr['response'], octave=tr['octave'], class_id=tr['class_id']))
    with open(des_path, 'rb') as f:
        des_f = np.load(f)
    return kps_f, des_f;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值