2012-03-12 44 views
6

Tôi đang tạo một trình phân loại đối tượng bằng cách sử dụng OpenCV và để tránh phải đào tạo các trình phân loại mỗi khi ứng dụng được khởi chạy, tôi muốn lưu trữ chúng trong một tệp. Cách thuận tiện nhất hiện có vẻ như đang sử dụng OpenCVs FileStorage class.Sử dụng OpenCV FileStorage trên iOS

Tôi đã chụp cảnh này nhưng có vẻ như nó không hoạt động. Tệp đã lưu không hiển thị ở bất kỳ đâu mặc dù tôi không nhận được lỗi. Tôi cho rằng iOS không chỉ cho phép bạn lưu bất kỳ tệp nào. Một cách khác là lấy YAML như một chuỗi, chuyển đổi nó thành một NSString và lưu nó vào một danh sách thuộc tính, nhưng tôi không chắc chắn làm thế nào điều này có thể được thực hiện hoặc liệu nó có thể thực hiện được hay không.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

13

Tôi đã quản lý để lớp FileStorage hoạt động với iOS. Vấn đề là tôi cần đảm bảo rằng tệp đã được tạo trong Thư mục Tài liệu được chỉ định của iOS. Dưới đây là một số mã mẫu:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docs = [paths objectAtIndex:0]; 
NSString *vocabPath = [docs stringByAppendingPathComponent:@"vocabulary.xml"]; 
FileStorage fs([vocabPath UTF8String], FileStorage::WRITE); 
// vocab is a CvMat object representing the vocabulary in my bag of features model 
fs << "vocabulary" << vocab; 
fs.release(); 

// READING 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docs = [paths objectAtIndex:0]; 
NSString *vocabPath = [docs stringByAppendingPathComponent:@"vocabulary.xml"]; 
FileStorage fs([vocabPath UTF8String], FileStorage::READ); 
// vocab is a CvMat object representing the vocabulary in my bag of features model 
fs["vocabulary"] >> vocab; 
fs.release(); 
Các vấn đề liên quan