【问题标题】:Python OpenCV dump a cv2 object to file?Python OpenCV 将 cv2 对象转储到文件中?
【发布时间】:2017-11-03 15:11:43
【问题描述】:

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

它不适用于 (c)Pickle。 典型的错误是:

PicklingError: Can't pickle <type 'cv2.KeyPoint'>: it's not the same object as cv2.KeyPoint

PicklingError: Can't pickle <type 'cv2.DMatch'>: it's not the same object as cv2.DMatch

我在 cv2 上找不到任何 dump 或保存/导出方法。

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

【问题讨论】:

  • Pickle error cv2.Boost 的可能重复项(有答案,但在这个问题之后被问到,并且不是 KeyPoint 特定的 - 但也不是这个问题的标题)

标签: python opencv pickle cv2


【解决方案1】:

如果您坚持将关键点保存在文本/pickle 文件中,那么您必须转换关键点对象以使其可以进行pickle。

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

【讨论】:

  • 这是 KeyPoints 案例中的一个很好的答案——其他人呢?每个课程都必须以定制的方式进行序列化吗?
  • 我相信是的。可能有些我没用过的案例已经序列化了。
猜你喜欢
  • 2014-04-22
  • 2016-01-03
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
相关资源
最近更新 更多