在圖像處理的過程中,算法寫完要對圖片做大量的測試,參考了網上的一些方法,自己寫了一段測試程序:
配置:VS2010+OpenCV2.4.4
第一種方式:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main(int argc,char** argv)
{
char filename[100];
cv::Mat imag;
for(unsigned int i=0;i<100;i++)
{
sprintf(filename,"F:/image/2/image (%d).bmp",i);
imag=cv::imread(filename,0);//導入圖片
cv::imshow("image",imag);
cv::waitKey(0);
//其他的操作
//...
}
}
然後大家可能會問的一個問題是如何給圖片批量命名,畢竟多張圖片手動按順序命名太麻煩,方法如下:
先選中圖片文件夾所有圖片。
然後批量重命名圖片。方法是:在第一幅圖片上右鍵單擊,在彈出的快捷菜單上單擊“重命名”,輸入“image(1) “,在空白處單擊一下,稍等,所有的圖片都按順序 image (1) , image (2) , image (3) , image (4)……排列重命名了。不知道爲什麼英文字母和括號之前自動多了一個空格…
注意 批量重命名圖片必須用英文字image命名,不能用中文字。數字必須是(1)形式,必須寫上括號。
第二種方式
這種方式先將圖片的名字寫入到txt中,然後通過讀取txt中的數據,從而達到讀取文件夾的圖片。
#define IMAGE_LIST_FILE "inputimage.txt"
int main()
{
FILE *fp;
char imagepath[200];
/* IMAGE_LIST_FILE 存放圖像的名字*/
fp=fopen(IMAGE_LIST_FILE,"r");
while(!feof(fp))
while(fscanf(fp, "%s ", imagepath) > 0)
{
//讀取圖片
cv::Mat img=imread(imagepath);
cv::imshow("ii",img);
cv::waitKey(3000); //每隔三秒顯示
//其他操作
}
return 0;
}
參考文獻:
http://blog.csdn.net/xiaojidan2011/article/details/8988246
http://blog.163.com/sweet6189@126/blog/static/11780946420145204445260/