gpt4 book ai didi

visual-c++ - 如何使用 OpenCV 函数 cvSaveImage() 保存多张不同名称的图像?

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:53 27 4
gpt4 key购买 nike

Hy 。我想做的是加载一堆图像,调整它们的大小并将调整后的图像保存到另一个文件夹。它加载图像,我检查过,并且工作正常,我唯一的问题是 cvSaveImage。例如:

char num[350]="C:\\Users\\Alex\Desktop\\pozeTiles\\image";  
char str[10];
char pmp[10]=".bmp";
itoa(index, str, 10);
strcat(num,str);
strcat(num,pmp);

cvNamedWindow("Testimage", HG_AUTOSIZE);
cvShowImage("Testimage", img);
IplImage *imgA = resizeImage(img,20,20, true);
cvSaveImage(num, imgA);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Testimage");
index++;

这是一个循环,它不起作用(现在只有 1 张照片)。如果我将 cvSaveImage 属性更改为:

 cvSaveImage("d:\\d.bmp", imgA);

它有效。问题是我有多个文件,我无法更改每个文件的名称..所以有人可以帮助我吗?我应该使用什么参数才能正常工作?

最佳答案

cvSaveImage() 之前添加一条调试语句,如 printf("Saving: %s\n", num);

此外,您没有检查 cvSaveImage() 的返回值。这很糟糕,因为该功能可能由于多种原因而失败:

if (!cvSaveImage(num, imgA))
{
printf("!!! cvSaveImage failed for %s\n", num);
// break or exit()
}

您很可能正在组装错误的目录路径。我建议您添加的调试会告诉您这一点。让我们逐步执行您的代码:

char num[350]="C:\\Users\\Alex\Desktop\\pozeTiles\\image.jpg";  
char str[10];
char pmp[10]=".bmp";
itoa(index, str, 10);

strcat(num,str);
// if num was "C:\\Users\\Alex\Desktop\\pozeTiles\\image.jpg"
// right now it should be: "C:\\Users\\Alex\Desktop\\pozeTiles\\image.jpgX"
// where X is the index number.

strcat(num,pmp);
// at this point, num will be:
// "C:\\Users\\Alex\Desktop\\pozeTiles\\image.jpgX.bmp"

关于visual-c++ - 如何使用 OpenCV 函数 cvSaveImage() 保存多张不同名称的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5518751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com