Tôi muốn tìm lướt trên tất cả các hình ảnh trong một thư mục nhất định và lưu các điểm chính và mô tả của chúng để sử dụng trong tương lai. Tôi quyết định sử dụng dưa như hình dưới đây:Pickling cv2.KeyPoint gây 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()
Khi tôi cố gắng thực hiện, tôi nhận được một lỗi sau:
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
Không ai biết, những gì nó có nghĩa và làm thế nào để sửa chữa nó? Tôi đang sử dụng Python 2.6 và OpenCV 2.3.1
Cảm ơn bạn rất nhiều