在图像处理过程中,经常要对图像进行缩放以减少数据量,加快处理速度,试过创建一个txt文件,其中存放文件列表(在dos下用dir/b 命令生成)但过程较为复杂,此处方法较为简单,但是要事先将要处理的图片按数字顺序命名,比如"1.jpg,2.jpg"等等。当然处理不仅限于图片尺度变化,还可以进行其他的常规操作,所以也是一个十分有用的简单的工程。可以批量处理图片。
工程目录下创建src_img文件夹和dst_img文件夹:
src——img中存有1.jpg----10.jpg 待处理图片
dst------img用来存放处理后的图片
#include "stdafx.h"
#include "string.h"
#include "iostream"
#include "stdio.h"
#include "opencv2/imgproc/imgproc.hpp";
#include "opencv2/highgui/highgui.hpp";
using namespace std;
using namespace cv;
#define DST_IMG_WIDTH 100
#define DST_IMG_HEIGH 100
void main(int argc, _TCHAR* argv[])
{
char ascii[5],ascij[5];
int i;
Mat src_img ;
string src_img_name="src_img/";//源文件所在位置
string dst_img_name="dst_img/";//目标文件要存放的位置
for(i=1;i<=10;i++)//文件个数
{
itoa(i,ascii,10);//整形数字转为字符十进制
src_img_name+=ascii;//源文件名,
dst_img_name+=ascii;//目标文件名,
src_img_name+=".jpg";//+扩展名
dst_img_name+=".jpg";//+扩展名
src_img = imread(src_img_name,1);//读入原始图像
Mat dst_img(DST_IMG_WIDTH,DST_IMG_HEIGH,src_img.type());//创建期望大小的空图像,类型
resize(src_img,dst_img,dst_img.size(),0,0,INTER_LINEAR);//利用opencv中的resize()函数对图片进行缩放
imwrite(dst_img_name,dst_img);//保存图片
cout<<"src_img_name:"<<src_img_name<<endl;
src_img_name="src_img/";//文件名复位。
dst_img_name="dst_img/";//文件名复位。
}
}