OpenCV的imread函数读取图片和VideoCapture类读取视频的路径选择相关问题


读取一张图片

注意:这里对后缀名是不区分大小写的。jpg和JPG是一样的,都可以成功读取。

相对路径

相对路径的好处是,图片在项目目录下,拷贝的时候跟着拷贝。再次编译的时候不会丢失。
最常用的方法是把图片拷贝到项目的根目录下面,和cpp文件放在同一个目录,直接访问。
srcImage = imread(“01.JPG”);
或者在根目录下,新建一个文件夹,如:图片。把图片拷贝到图片文件夹下面。

srcImage = imread("图片//01.JPG");//可以
srcImage = imread("图片\\01.JPG");//可以
srcImage = imread("图片/01.JPG");//可以

这三种方式,都是可以的。
而单右斜线形式是不可以的。

srcImage = imread("图片\01.JPG");//不可以

绝对路径

也可以使用绝对路径,和相对路径类似的。

srcImage = imread("D://项目//Project1//图片//01.JPG");//可以
srcImage = imread("D:\\项目\\Project1\\图片\\01.JPG");//可以
srcImage = imread("D:/项目/Project1/图片/01.JPG");//可以

这三种方式,都是可以的。
而单右斜线形式是不可以的。

srcImage = imread("D:\项目\Project1\图片\01.JPG");//不可以

读取多张图片

对于多张图片的处理,一般都是放在某个文件夹下面。由循环去读取。
注意:这里对后缀名是区分大小写的。jpg和JPG是不同的,一定要和文件的后缀名一样。

//相对路径
    string path = "图片\\*.JPG";//可以
    //string path = "图片//*.JPG";//可以
    //string path = "图片/*.JPG";//可以
    //string path = "图片\*.JPG";//不可以
//绝对路径
    string path = "D://项目//Project1//图片//*.JPG";//可以
    //string path = "D:\\项目\\Project1\\图片\\*.JPG";//可以
    //string path = "D:/项目/Project1/图片/*.JPG";//可以
    //string path = "D:\项目\Project1\图片\*.JPG";//不可以   
//-----------------------------------------------------------    
    cout << path << endl;//输出图片路径

    vector<Mat> images;
    vector<String> fn;
    glob(path, fn, false);
    size_t count = fn.size();

    cout << count << endl;//输出图片数量

    for (size_t i = 0; i < count; i++)
    {
        images.push_back(imread(fn[i]));
        imshow("images", images[i]);
        waitKey(1000);
    }
    return 0;

读取一段视频

相对路径

相对路径的好处是,视频在项目目录下,拷贝的时候跟着拷贝。再次编译的时候不会丢失。
最常用的方法是把视频拷贝到项目的根目录下面,和cpp文件放在同一个目录,直接访问。

VideoCapture capture;
capture.open("test.mp4");
//或者
VideoCapture capture("test.mp4");

或者在根目录下,新建一个文件夹,如:视频。把视频拷贝到视频文件夹下面。

capture.open("视频//test.mp4");//可以
capture.open("视频\\test.mp4");//可以
capture.open("视频/test.mp4");//可以

这三种方式,都是可以的。
而单右斜线形式是不可以的。

capture.open("视频\test.mp4");//不可以

绝对路径

也可以使用绝对路径,和相对路径类似的。

capture.open("D://项目//Project1//视频//test.mp4");//可以
capture.open("D:\\项目\\Project1\\视频\\test.mp4");//可以
capture.open("D:/项目/Project1//视频/test.mp4");//可以

这三种方式,都是可以的。
而单右斜线形式是不可以的。

capture.open("D:\项目\Project1\视频\test.mp4");//不可以