转载自: https://blog.csdn.net/hubai789/article/details/49926019
在处理一些数据集的时候,我们经常会碰到数据集的文件名是按时间戳(time stamp),或者其他方式命名的文件,比如下图所示:
而我们在编写程序时,往往希望读入的这些数据集的文件名是一种更简洁的形式,比如按照索引(index)方式:1.png,2.png,3.png…,那么如何批量重命名一个文件夹下的文件名呢?方法很简单,只需要在Terminal里面进入数据集所在的文件夹,输入以下命令即可:
i=1; for x in *; do mv $x $i.png; let i=i+1; done
重命名后的数据集如下,可以看到文件名已经变成了按数字索引编号,这样就不用担心程序难以适配不同数据集数据的问题了:
OpenCV读取序列图片
https://blog.csdn.net/kh1445291129/article/details/50133713
看到一篇牛人的博客(http://blog.csdn.net/dengtaocs/article/details/36653597),
发现了长久以来就想解决的问题:OpenCV读取图像序列!太爽了!
比如我的D盘lemming文件夹下有下图所示的图像序列:文件名的宽度为5个字符,
每隔5毫秒自动读取下一幅图像直到读取完毕。
#include
#include
using namespace cv;
using namespace std;
int main()
{
string first_file = "D:/lemming/%5d.jpg";//%5d代表文件名的宽度
VideoCapture sequence(first_file);
Mat image;
namedWindow("Image sequence");
while(1){
sequence >> image;
if(image.empty()) break;
imshow("Image sequence", image);
waitKey(5);//每隔5毫秒再读下一幅图像
}
cout << "End of Sequence" << endl;
waitKey();
return 0;
}