批量更改圖片大小程式
阿新 • • 發佈:2019-02-16
假設我們現在有目標資料夾A,A中包含40個資料夾s1,s2...s40,每個資料夾下包含10張圖1,2,3...10。圖片大小任意。
我們的目標是在不改變整個圖片資料格式的前提下,批量更改圖片大小,最後得到的結果是,輸出B資料夾,B中包含40個資料夾s1,s2...s40,每個資料夾下包含10張圖1,2,3...10,圖片大小為我們所需要的大小(這裡我使用256X256)。
具體實現藉助opencv中的resize函式,具體用法自行百度,引數呼叫CV_INTER_LINEAR(雙線性插值),放縮效果還不錯。
貼程式碼=。=
// Resize_32x32.cpp : 定義控制檯應用程式的入口點。 //********************************************** * 批量更改圖片大小 * Win8.1+VS2015+Opencv 2.4.8 * King_HAW * 2016/12/10 ***********************************************/ #include "stdafx.h" #include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include <string> #include <direct.h> using namespace cv; using namespace std; int main() { int j = 1; int k; int i; for (k = 1; k <= 40; k++) { for (i = 1; i <= 10; i++) { char imageName[100]; char imageSave[100]; char FileName[100]; sprintf_s(imageName, "E:\\深度學習\\face_data\\orl_faces_png\\s%d\\%d.png", k, i); sprintf_s(imageSave, "E:\\ORL_FACE\\s%d\\%d.png", k, j); sprintf_s(FileName, "E:\\ORL_FACE\\s%d", k); _mkdir(FileName); Mat src_img = imread(imageName);//讀入圖片資料 Mat dst_img1; resize(src_img, dst_img1, Size(256, 256), 0, 0, CV_INTER_LINEAR); // 雙線性插值 imwrite(imageSave, dst_img1); waitKey(0); ++j; } j = 1; } }
路徑為字元陣列,不要直接用字串。
如果你的圖片資料大於兩層的話請按照資料層數套for迴圈。
有時間也可以試試CV_INTER_CUBIC(立方插值),應該會有所差別,選擇你認為較好的那個。