您的位置:首页 > 运维架构

OpenCv函数cvLoadImage的使用问题总结

2013-08-22 14:41 435 查看

问题描述如下:

有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);

问题拓展:

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

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

当不愿意采用系统时间命名的时候,就可以用上面的方式,命名递增的一个字符串,类似于数码相机自动存储的命名方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: