Visual c++ 如何使用OpenCV函数cvSaveImage()保存多个具有不同名称的图像?
Hy.我想做的是加载一堆图像,调整它们的大小,并将调整大小的图像保存到另一个文件夹。它加载图像,我检查了,工作正常,我唯一的问题是cvSaveImage。例如:Visual c++ 如何使用OpenCV函数cvSaveImage()保存多个具有不同名称的图像?,visual-c++,opencv,Visual C++,Opencv,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);
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++;
这是在一个循环中,不起作用(目前只有一张照片)。如果我将cvSaveImage atribute更改为:
cvSaveImage("d:\\d.bmp", imgA);
它可以工作。问题是我有多个文件,无法更改每个文件的名称。因此,有人可以帮助我吗?我应该使用什么参数才能工作?看起来您创建的输出文件名错误,请尝试在循环中打印num的值 或者,您可以使用以下内容创建输出文件1.bmp、2.bmp等
char filename[80];
..... loop ...
sprintf(filename,"%u.bmp",counter)
cvSaveImage(filename, imgA);
看起来您错误地创建了输出文件名,请尝试在循环中打印num的值 或者,您可以使用以下内容创建输出文件1.bmp、2.bmp等
char filename[80];
..... loop ...
sprintf(filename,"%u.bmp",counter)
cvSaveImage(filename, imgA);
就在
cvSaveImage()
之前添加一条调试语句,如printf(“保存:%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"
就在cvSaveImage()
之前添加一条调试语句,如printf(“保存:%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"
int main(int argc,char*argv[])
{
而(1)
{
}
}intmain(intargc,char*argv[])
{
而(1)
{
}
}我们似乎有一个OpenCV跟踪者。社区对此表示赞赏。似乎我们有一个OpenCV跟踪者。社区对此表示赞赏。您能否将图像保存到“C:\\d.bmp”
?我会尝试逐字递增目录名。在某些目录上,您可能没有写入权限。能否将图像保存到“C:\\d.bmp”
?我会尝试逐字递增目录名。在某些目录上,您可能没有写入权限。