特定のディレクトリ内のすべての画像でサーフィンを検索し、将来の使用のためにキーポイントとディスクリプタを保存したい。私は、以下に示すように漬物を使用することにしました:pickling 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()
私が実行しようとすると、私は次のエラーを取得する:
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
誰もがそれが何を意味し、それを修正する方法を、知っていますか?私は、Python 2.6とOpenCVの2.3.1
問題はあなたがピクルスファイルにcv2.KeyPointをダンプすることができないということであるあなたにたくさん