批量更改图片大小程序

来源:互联网 发布:c2c网络购物须知要点 编辑:程序博客网 时间:2024/05/17 23:58

假设我们现在有目标文件夹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(立方插值),应该会有所差别,选择你认为较好的那个。

1 0
原创粉丝点击