簡體   English   中英

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

[英]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)

我打印了desdn的類型,它們都是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM