OpenCV在Swift IOS项目中读取文件

时间:2017-04-19 19:11:01

标签: ios swift xcode opencv

我正在尝试阅读" classifications.xml"和" images.xml"从一个在VisualStudio项目中工作正常的教程。现在如何将Swift XCode项目中的C ++库指向文件?将它们拖放到项目中不起作用。

这是原始代码。如何将cv :: Filestorage类指向我项目中的文件?现在它返回错误

cv::Mat matClassificationInts;      // we will read the classification numbers into this variable as though it is a vector

cv::FileStorage fsClassifications("classifications.xml", cv::FileStorage::READ);        // open the classifications file

if (fsClassifications.isOpened() == false) {                                                    // if the file was not opened successfully
    std::cout << "error, unable to open training classifications file, exiting program\n\n";    // show error message
    return(0);                                                                                  // and exit program
}

fsClassifications["classifications"] >> matClassificationInts;      // read classifications section into Mat classifications variable
fsClassifications.release();                                        // close the classifications file

1 个答案:

答案 0 :(得分:1)

当您将它们拖放到项目中时,它们最终会出现在应用包中。

可以使用此Swift代码找到这些文件的文件名:

Bundle.main.path(forResource: "classifications", ofType: "xml")

我不知道你的代码加载了什么,但是如果你刚刚使用&#34; classifications.xml&#34;,它会默认为当前文件夹,这不是iOS上的允许路径资源。

如果您尝试使用C ++进行互操作,可能更容易使用Objective-C。

喜欢的东西;

NSString *path = [[NSBundle main] pathForResource:@"classification" ofType:@"xml"];
char *pathCString = [path cStringUsingEncoding:NSUTF8StringEncoding];

然后阅读:How to call an Objective-C Method from a C Method?