OpenCV批量更改圖片檔案大小與名稱
阿新 • • 發佈:2019-02-18
問題來源:給導師打工做影象處理,用手機拍了很多原始圖片,無奈圖片是以拍攝時間命名的,而且畫素很高(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)