1. 程式人生 > >OpenCV批量更改圖片檔案大小與名稱

OpenCV批量更改圖片檔案大小與名稱

問題來源:給導師打工做影象處理,用手機拍了很多原始圖片,無奈圖片是以拍攝時間命名的,而且畫素很高(2000+ *  2000+),計算機處理很慢,於是乎請教師兄,師兄讓我用Windows自帶的畫圖軟體更改大小,改了2張,覺得不對啊,程式設計師應該以程式設計師的思想解決問題,於是乎就想到能不能批量修改,果然就有了下面的結果:

編了一個函式,用於搜尋指定資料夾的全部影象同時更改大小:

void SearchFile(CString pStr)
{
	int i=0;
	CString name="";
	IplImage *srcImage=NULL;
	IplImage *outputImage=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);
	CFileFind finder;
	CString strWildcard(pStr);
	strWildcard += "\\*.*";
	bool bWorking = finder .FindFile(strWildcard);
	while (bWorking)
	{
		++i;
		name.Format("Pic%d.jpg",i);
		bWorking = finder.FindNextFile();
		if (finder.IsDots())
		{
			continue;
		}
		CString sFileName=finder.GetFileName();
		srcImage = cvLoadImage(pStr + "\\" + sFileName);
		
		cvResize(srcImage,outputImage,CV_INTER_CUBIC);
		cvSaveImage(pStr + "\\"+name,outputImage);
		
		cout<<(LPCTSTR) sFileName <<endl;
	}
	cvReleaseImage(&srcImage);
	finder.Close();
}
標頭檔案與函式的呼叫:
<pre name="code" class="html">#include <vector>
#include <iostream>
#include <opencv2//opencv.hpp>
#include <string>
#include <afx.h>

using namespace std;
using namespace cv;
int main()
{
	SearchFile("D:\\robot\\sourcePicture\\圖片");
	return 0;
}

OK,結果沒問題。 附:如果的建立的控制檯程式,需要支援MFC類,設定如下:專案(Project)->屬性(attribute)