Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 如何使用OpenCV函数cvSaveImage()保存多个具有不同名称的图像?_Visual C++_Opencv - Fatal编程技术网

Visual c++ 如何使用OpenCV函数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);

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++;
这是在一个循环中,不起作用(目前只有一张照片)。如果我将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”
?我会尝试逐字递增目录名。在某些目录上,您可能没有写入权限。