C++中用for循环中对多幅图像进行同样的处理

87 篇文章 6 订阅

问题描述:

有n幅图,命名分别为Image1.tif,Image2.tif ... ... Imagen.tif
现在要在一个for循环中对每幅图像进行同样的处理,如灰度化,二值化等,需要用到函数如下:
CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));


解决方案:

1)直接用CString构造
CString ImageStr="";
ImageStr.Format("Image%d.tif",j+1);
cvLoadImage(ImageStr, 0);
其中j从1到n-1递增

2)直接定义char数组
char c[15];
sprintf(c1,"Image%d.tlf",j+1 );
cvLoadImage(c, 0);


3)这方法比较多此一举,但是也写在这里,将CString转换为char*再用
CString ImageStr="Image";
ImageStr.Format("Image%d.tif",j+1);
char* str=(char*)ImageStr.GetBuffer(ImageStr.GetLength());
cvLoadImage(str, 0);

转换方法二
CString ImageStr="Image";
ImageStr.Format("Image%d.tif",j+1);
char* str=(LPTSTR)(LPCTSTR)ImageStr;
cvLoadImage(str, 0);


问题拓展:

这样的命名方法,还可以对程序执行过程中自动生成的文件进行命名

有人会采用系统时间进行命名,这样不会造成重复;

当不愿意采用系统时间命名的时候,就可以用上面的方式,命名递增的一个字符串,类似于数码相机自动存储的命名方式。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值