[英]How to serialize and deserialize SURF descriptor in OpenCV?
我正在使用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錯誤:knnMatchImpl中的聲明失敗(_queryDescriptors.type()== trainDescType),文件/home/zibo/opencv/modules/features2d/src/matchers.cpp,第722行
看來,原始描述符des
不僅僅是numpy.ndarray
的類型。 我搜索了OpenCV代碼,但尚未找到答案。
因此,任何人都可以提供幫助。 如何序列化和反序列化SURF描述符?
將加載的數據轉換為數組時,將數據類型設置為float32。
dn = np.asarray(du, dtype = np.float32)
我假設這里的“ np”是“ numpy”的別名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.