Python OpenCV是否将cv2对象转储到文件?

Python OpenCV是否将cv2对象转储到文件?,python,opencv,pickle,cv2,Python,Opencv,Pickle,Cv2,如何将cv2对象(更准确地说是包含这些对象的列表或np.array)例如关键点(类型:cv2.KeyPoint)或匹配项(类型:cv2.DMatch)转储到磁盘上的文件中,以便稍后导入它们,而不是重新运行一段时间(在低端计算机上运行数小时到数天)大量图像(>50000)上的算法 它不适用于(c)Pickle。 典型错误包括: PicklingError: Can't pickle <type 'cv2.KeyPoint'>: it's not the same object as c

如何将cv2对象(更准确地说是包含这些对象的列表或np.array)例如关键点(类型:
cv2.KeyPoint
)或匹配项(类型:
cv2.DMatch
)转储到磁盘上的文件中,以便稍后导入它们,而不是重新运行一段时间(在低端计算机上运行数小时到数天)大量图像(>50000)上的算法

它不适用于(c)Pickle。 典型错误包括:

PicklingError: Can't pickle <type 'cv2.KeyPoint'>: it's not the same object as cv2.KeyPoint
PicklingError:无法pickle:它与cv2.KeyPoint不是同一个对象

PicklingError:无法pickle:它与cv2.DMatch不是同一个对象
我在cv2上找不到任何
转储
或保存/导出方法


该脚本在Ubuntu 16.04和Windows 7上都使用Python 2.7运行。

如果您坚持将关键点保存在文本/pickle文件中,则必须转换关键点对象,使其能够pickle


使用SO答案将对象分解为可pickle的格式,并将其加载回您的代码。

的可能重复(有答案,但在这个问题之后被询问,并且不是特定于关键点的-但这个问题的标题也不是)在关键点的情况下,这是一个很好的答案-其他人呢?每个类都必须以定制的方式序列化吗?我相信是这样。可能有一些我没有使用过的已经序列化的案例。
PicklingError: Can't pickle <type 'cv2.DMatch'>: it's not the same object as cv2.DMatch