IplImage在openCV c ++中打开图像

时间:2013-04-22 01:59:53

标签: c++ opencv loadimage

我将图像保存为1.jpg,2.jpg和3.jpg在文件夹中(在C:/ images / result / template /)

我正在尝试加载所有图片,如下所示:

string link="C:/images/result/template/";
int i=1;
while (i<4)
{
link=link+i+".jpg";
IplImage* templat  = cvLoadImage(link, 1);
IplImage* templat2 = cvCreateImage(cvSize(templat->width, templat->height), 
IPL_DEPTH_8U, 1);
i++
}

但是我收到了错误。

错误C2678:二进制'+':找不到运算符,它接受类型为'std :: string'的左手操作数(或者没有可接受的转换)

4 个答案:

答案 0 :(得分:1)

您可以使用sprintfstd::stringstream

加载一系列图片

以下是使用sprintf

执行此操作的方法
char link[512];

int i=1;

while (i<4)
{
  sprintf(link,"C:/images/result/template/%d.jpg",i);
  IplImage* templat  = cvLoadImage(link, 1);
  IplImage* templat2 = cvCreateImage(cvSize(templat->width, templat->height),IPL_DEPTH_8U, 1);
  i++
}

答案 1 :(得分:0)

  

链路=链路+ I + “JPG”;

不做你认为它做的事情 - 实际上我很惊讶它编译。

PS。你需要检查来自cvLoadImage()的返回,以检查它是否实际加载了任何东西 PPS。你应该使用cv :: imread()

答案 2 :(得分:0)

检查路径,因为当路径不正确时:link = null

答案 3 :(得分:0)

试试这个PLZ ..

string link="C://images//result//template//";  //Please put '//' instead of '/'
int i=1;
while (i<4)
{
link=link+i+".jpg";
IplImage* templat  = cvLoadImage(link.c_str(), 1); // instead of string, use char*
IplImage* templat2 = cvCreateImage(cvSize(templat->width, templat->height),IPL_DEPTH_8U,1);
i++; //put semi-colon
}