E_l*_*ner 4 opencv image video-capture image-processing video-processing
我试图使用OpenCV的VideoCapture功能从文件夹中读取一系列图像.在互联网上进行一些搜索之后,我目前的代码是这样的:
cv::VideoCapture cap ( "C:\\Users\\Admin\\Documents\\Images\\%02d.jpg");
Run Code Online (Sandbox Code Playgroud)
我期待看到该VideoCapture函数应该读取该文件夹中的所有图像,其名称为两个连续数字,如01.jpg, 02.jpg, ..., 30.jpg.有人在互联网上告诉VideoCapture我,一旦我给出第一张图片的位置和名称,该功能应该可以捕获所有这些图像.所以我也尝试这样做:
cv::VideoCapture cap ("C:\\Users\\Admin\\Documents\\Images\\01.jpg");
Run Code Online (Sandbox Code Playgroud)
但这仍然没有用,至少不是我的情况.这些图像具有不同的大小,因此我将首先阅读它们,调整它们的大小,然后对它们进行进一步处理.我怎样才能做到这一点?我正在使用Windows7,使用VisualStudio.谢谢.
根据我的经验,即使没有指定格式,VideoCapture也可以读取一系列图像.例如,以下工作正常:
std::string pathToData("cap_00000000.bmp");
cv::VideoCapture sequence(pathToData);
Run Code Online (Sandbox Code Playgroud)
图像按顺序读取:
Mat image;
sequence >> image; // Reads cap_00000001.bmp
Run Code Online (Sandbox Code Playgroud)
但是:这仅在图像位于可执行文件的文件夹中时才有效.我无法想出指定这样的目录:
std::string pathToData("c:\\path\\cap_00000000.bmp");
std::string pathToData("c://path//cap_00000000.bmp");
// etc.
Run Code Online (Sandbox Code Playgroud)
似乎是一个bug.一个正式的例子可以在这里找到:
http://kevinhughes.ca/tutorials/reading-image-sequences-with-opencv/ https://github.com/Itseez/opencv/pull/823/files