У меня есть изображения, сохраненные как 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» (или нет приемлемого преобразования)
Вы можете загрузить серию изображений, используя 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++
}
ссылка = ссылка + я + «JPG.»;
Не делает то, что вы думаете, это делает — на самом деле я поражен, что он компилируется.
пс. вам нужно проверить возврат из cvLoadImage (), чтобы проверить, действительно ли он что-то загрузил.
имп. Вы должны использовать cv :: imread ()
Проверьте путь, потому что когда путь не правильный: link = null
попробуйте это плз ..
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
}