1. 程式人生 > >opencv——批量修改圖片畫素大小

opencv——批量修改圖片畫素大小



#include "stdafx.h"
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;

Mat dealimage;
int num = 0;
ostringstream oss;//結合數字和字串
void xiugai(Mat dealimage);
int main()
{
	//////////////////////從指定資料夾下提取圖片//////////////////
	//需要修改圖片的資料夾地址,注意可以為jpg或者png等
	string pattern = "C:/Users/zhang/Desktop/opencv——例項/小案例/車牌檢測/基於adaboost機器學習/檢測到的車牌字元/*.jpg"; //圖片存放的資料夾地址和型別
	vector<Mat> input_images;
	vector<String> input_images_name;
	glob(pattern, input_images_name, false);
	//為false時,僅僅遍歷指定資料夾內符合模式的檔案,當為true時,會同時遍歷指定資料夾的子資料夾
	//此時input_images_name存放符合條件的圖片地址
	int all_num = input_images_name.size();//檔案下總共有幾個圖片
	cout << "總共有" << all_num << "個圖片待測試" << endl;
	double t = (double)cvGetTickCount();//計算耗時
	for (int i = 0; i < input_images_name.size(); i++)
	{
		input_images.push_back(imread(input_images_name[i]));
		//迴圈讀取每張圖片並且依次放在vector<Mat> input_images內
		dealimage = input_images[i];
		xiugai(dealimage);
	}
	waitKey(0);
	return 0;
}


void xiugai(Mat dealimage)
{


	Mat resize_1(40, 20, CV_8UC3);//
	resize(dealimage, resize_1, Size(40, 20)); //指定修改後圖片的具體大小
	//--------儲存圖片
	//儲存地址
	oss << "C:/Users/zhang/Desktop/opencv——例項/小案例/車牌檢測/基於adaboost機器學習/檢測到的車牌字元/";
	num += 1;
	oss << num << ".jpg";
	imwrite(oss.str(), resize_1);//儲存
	oss.str("");//每次用了oss字串後,清空字串內容
}