gpt4 book ai didi

python - 如何在 OpenCV 中序列化和反序列化 SURF 描述符?

转载 作者:太空宇宙 更新时间:2023-11-03 21:52:46 24 4
gpt4 key购买 nike

我正在使用 OpenCV 解决 SURF。我想将 SURF 描述符放入缓存,所以我必须序列化描述符,然后将其反序列化回描述符。

我的做法是这样的:

[serialize]
kp, des = surf.detectAndCompute(img, None)
jm = json.dumps(des.tolist())

[deserialize]
du = json.loads(jm)
dn = np.asarray(du)

我打印了des的类型,dn,它们都是np.ndarray的类型。但是,反序列化后,我无法使用dn来执行knnMatch,而使用原始des是可以的。

出现错误:

OpenCV Error: Assertion failed (_queryDescriptors.type() == trainDescType) in knnMatchImpl, file /home/zibo/opencv/modules/features2d/src/matchers.cpp, line 722

看来,原始描述符des不仅仅是numpy.ndarray的一种类型。我搜索了 OpenCV 代码,但还没有找到答案。

所以,任何人都可以提供帮助。如何序列化和反序列化SURF描述符?

最佳答案

将加载的数据转换为数组时,将数据类型设置为float32。

dn = np.asarray(du, dtype = np.float32)

我假设这里的'np'是'numpy'的别名。

关于python - 如何在 OpenCV 中序列化和反序列化 SURF 描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34101878/

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