IplImage Open Image в переполнении стека openCV

У меня есть изображения, сохраненные как 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» (или нет приемлемого преобразования)

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

Другие решения

ссылка = ссылка + я + «JPG.»;

Не делает то, что вы думаете, это делает — на самом деле я поражен, что он компилируется.

пс. вам нужно проверить возврат из cvLoadImage (), чтобы проверить, действительно ли он что-то загрузил.
имп. Вы должны использовать cv :: imread ()

0

Проверьте путь, потому что когда путь не правильный: link = null

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
}
0
По вопросам рекламы [email protected]