相关疑难解决方法(0)

酸洗cv2.KeyPoint会导致PicklingError

我想在给定目录中的所有图像中搜索冲浪并保存其关键点和描述符以供将来使用.我决定使用如下所示的泡菜:

#!/usr/bin/env python
import os
import pickle
import cv2

class Frame:
  def __init__(self, filename):
    surf = cv2.SURF(500, 4, 2, True)
    self.filename = filename
    self.keypoints, self.descriptors = surf.detect(cv2.imread(filename, cv2.CV_LOAD_IMAGE_GRAYSCALE), None, False)

if __name__ == '__main__':

  Fdb = open('db.dat', 'wb')
  base_path = "img/"
  frame_base = []

  for filename in os.listdir(base_path):
    frame_base.append(Frame(base_path+filename))
    print filename

  pickle.dump(frame_base,Fdb,-1)

  Fdb.close()
Run Code Online (Sandbox Code Playgroud)

当我尝试执行时,出现以下错误:

File "src/pickle_test.py", line 23, in <module>
    pickle.dump(frame_base,Fdb,-1)
...
pickle.PicklingError: Can't pickle <type 'cv2.KeyPoint'>: it's not the same object as cv2.KeyPoint
Run Code Online (Sandbox Code Playgroud)

有谁知道,它意味着什么以及如何解决它?我使用的是Python 2.6和Opencv 2.3.1

非常感谢

python opencv

18
推荐指数
2
解决办法
5895
查看次数

标签 统计

opencv ×1

python ×1