怎么利用OpenCV的cvLoadImage()加载一个文件夹里的多幅图片,循环语句怎么写?
推荐于2016-04-18 · 知道合伙人互联网行家
关注
展开全部
char filename[100];
char windowname[100];
IplImage* pScr;
unsigned char *Readfigsmethod1(int num)// 读入num个图片
{
for(int i=1;i<=num;i++)
{
sprintf(filename,"D:/test/%d.jpg",i);// 将图片以数字命名:例如1.jpg 2.jpg等,放入D:/test/文件夹下
sprintf(windowname,"window%d.jpg",i);
pScr=cvLoadImage(filename,1);//导入图片
cvNamedWindow(windowname,CV_WINDOW_AUTOSIZE);
cvShowImage(windowname,pScr);//显示图片
//cvWaitKey(0);
}
cvWaitKey(0);
cvReleaseImage(&pScr);//释放图片
cvDestroyAllWindows();//销毁窗口
return 0;
}
注释:连续读取图片主要问题在于filename指向图片目录, sprintf(filename,"D:/test/%d.jpg",i)的使用可以使得filename可以从1.jpg,2.jpg,一直到num.jpg. filename=D:/test/i.jpg.
char windowname[100];
IplImage* pScr;
unsigned char *Readfigsmethod1(int num)// 读入num个图片
{
for(int i=1;i<=num;i++)
{
sprintf(filename,"D:/test/%d.jpg",i);// 将图片以数字命名:例如1.jpg 2.jpg等,放入D:/test/文件夹下
sprintf(windowname,"window%d.jpg",i);
pScr=cvLoadImage(filename,1);//导入图片
cvNamedWindow(windowname,CV_WINDOW_AUTOSIZE);
cvShowImage(windowname,pScr);//显示图片
//cvWaitKey(0);
}
cvWaitKey(0);
cvReleaseImage(&pScr);//释放图片
cvDestroyAllWindows();//销毁窗口
return 0;
}
注释:连续读取图片主要问题在于filename指向图片目录, sprintf(filename,"D:/test/%d.jpg",i)的使用可以使得filename可以从1.jpg,2.jpg,一直到num.jpg. filename=D:/test/i.jpg.
展开全部
最好是把文件名全部读到一个txt文件里 当然你也可以自己打进去。然后读取txt 中的每一行,这里的每一行是一个路径加图片名,在用cvloadimage 读这一行的string 或char[] .参考人脸识别的那个程序开头 read_csv,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for (int count=1;count<=100;count+=1)
{
char img_name[100];
sprintf(img_name,"D://%d.jpg",count);
IplImage * result=cvLoadImage(img_name,0);
}
多幅图片要顺序命名
{
char img_name[100];
sprintf(img_name,"D://%d.jpg",count);
IplImage * result=cvLoadImage(img_name,0);
}
多幅图片要顺序命名
追问
如果要把几幅图片相互比较相似度,循环改怎么写?假如是比较4副图片
追答
设置不同的路径,或者设置不同图片名,对读入的循环中比较啊 ,有上面的代码,你应该能改出来的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询