关于批量将彩色图转为灰度图

今天的任务是完成adaboost分类器中,得到XML文件。其中第一步就是讲正负样本转换为灰度图。

如何批量将正负样本的图片转为灰度图呢?

我参考了这篇文章:http://blog.csdn.net/LightP2_16/article/details/53116866

#include"stdlib.h"         
#include <highgui.h>    
#include "stdio.h"      
#include "cv.h"      
using namespace std;
int main()
{
int image_id = 0;
char filename[4936];
char filename2[4936];


IplImage *image = 0, *imageresize = 0;
sprintf(filename, "D:\Pic\smoke\%d.jpg", image_id);
IplImage* src = cvLoadImage(filename);
cout << "\n 开始灰度化! \n";


while (src)
{
imageresize = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);  //创建头并分配数据 
cvCvtColor(src, imageresize, CV_RGB2GRAY);
sprintf(filename2,"D:\adboost\neg\%d.jpg", image_id);
cvSaveImage(filename2, imageresize);  //将处理后的图像保存放入另一个文件夹  


cvReleaseImage(&imageresize);
cvReleaseImage(&src);  //释放内存  
image_id++;  //图片序号递增  
sprintf(filename, "D:\Pic\smoke\%d.jpg", image_id);
src = cvLoadImage(filename); //加载下一幅图像   
}


cout << "\n 灰度化完毕! \n";
system("PAUSE");
return(0);
}

但是始终没有生成灰度图片?

为什么呢?

试了半天,终于发现是因为sprintf(filename2,"D:\adboost\neg\%d.jpg", image_id);此处不应该为%d.jpg,而是1.jpg

然后绝对路径不对,我是放在工程目录下面来调试,成功。

#include"stdlib.h"         
#include <highgui.h>    
#include "stdio.h"      
#include "cv.h"      
using namespace std;
int main()
{
int image_id = 0;
char filename[4936];
char filename2[4936];




IplImage *image = 0, *imageresize = 0;
sprintf(filename, "smoke\\1.jpg", image_id);
IplImage* src = cvLoadImage(filename);
cout << "\n 开始灰度化! \n";




while (src)
{
imageresize = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);  //创建头并分配数据 
cvCvtColor(src, imageresize, CV_RGB2GRAY);
sprintf(filename2, "neg\\%d.jpg", image_id);
cvSaveImage(filename2, imageresize);  //将处理后的图像保存放入另一个文件夹  




cvReleaseImage(&imageresize);
cvReleaseImage(&src);  //释放内存  
image_id++;  //图片序号递增  
sprintf(filename, "smoke\\%d.jpg", image_id);
src = cvLoadImage(filename); //加载下一幅图像   
}




cout << "\n 灰度化完毕! \n";
system("PAUSE");
return(0);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值