1

我在文件夹中保存为 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

4 回答 4

1

sprintf您可以使用或加载一系列图像std::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++
}
于 2013-04-22T03:58:11.187 回答
0

试试这个。。

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
}
于 2013-04-22T09:52:43.987 回答
0

链接=链接+i+“.jpg”;

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

附言。您需要检查 cvLoadImage() 的返回以检查它是否实际加载了任何内容。
pps。你应该使用 cv::imread()

于 2013-04-22T02:12:40.630 回答
0

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

于 2013-04-22T09:34:13.813 回答