OpenCV iOS 中的 VideoCapture 与 OpenCV C++

VideoCapture in OpenCV iOS vs OpenCV C++

我正在尝试打开存储的视频。

在使用 OpenCV 3.0 的 C++ 项目中,代码如下:

cv::VideoCapture capture;
if(capture.open("IMG_1181.MOV")){
    cout << "opened";
}else{
    cout << "not opened";
}

我可以毫无问题地打开视频文件,输出行显示 opened

但是,如果我使用完全相同的视频和完全相同的代码,但 OpenCV 的 iOS 版本设置为编译为 Objective-C++,则输出行给出 not opened。我没有收到任何错误。就是视频打不开。有任何想法吗?

在 iOS 上,人们不能简单地只用文件名打开文件(或者至少我不能)。首先,您需要获取包的路径,然后使用该路径加载文件。例如:

// get main app bundle
NSBundle * appBundle = [NSBundle mainBundle];

// constant file name
NSString * videoName = @"IMG_1181";
NSString * videoType = @"MOV";

// get file path in bundle
NSString * videoPathInBundle = [appBundle pathForResource: videoName ofType: videoType];

// convert NSString to std::string
std::string videoPath([videoPathInBundle UTF8String]);

// load video
video =  cv::VideoCapture(videoPath);