OpenCV連續讀取多張圖片方法總結

在圖像處理的過程中,算法寫完要對圖片做大量的測試,參考了網上的一些方法,自己寫了一段測試程序:

配置: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);
        //其他的操作
        //...
    }
}

然後大家可能會問的一個問題是如何給圖片批量命名,畢竟多張圖片手動按順序命名太麻煩,方法如下:

  1. 先選中圖片文件夾所有圖片。

  2. 然後批量重命名圖片。方法是:在第一幅圖片上右鍵單擊,在彈出的快捷菜單上單擊“重命名”,輸入“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/

http://zhidao.baidu.com/link?url=rDYF7wUmPF-OEux5V5reQBCSfW5ge3iKlXxFA132l4Y0omgxutYoQFcmb3I1gDzsg-f9T3HnQKUBGNP-KvO1rq

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章