我将图像保存为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'的左手操作数(或者没有可接受的转换)
答案 0 :(得分: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++
}
答案 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
}