Ошибка преобразования IplImage ** в IplImage * - PullRequest
0 голосов
/ 21 ноября 2011
IplImage *img;
img = (IplImage **)malloc(IMAGE_NUM * sizeof(IplImage *));

for(index=0; index<IMAGE_NUM; index++){
    sprintf(filename, "preproc/preproc%d.jpg", index);
    img = cvLoadImage(filename, 0);
}

Привет! Этот фрагмент кода приводит к ошибке: не может преобразовать ‘IplImage ** {aka _IplImage *}’ в ‘IplImage {aka _IplImage *}’ в назначении. Я пытаюсь загрузить несколько изображений здесь. Что я делаю неправильно? Спасибо!

Ответы [ 3 ]

0 голосов
/ 21 ноября 2011

попробуйте

IplImage** img;
img = (IplImage**)malloc(IMAGE_NUM * sizeof(IplImage *));

for(index=0; index<IMAGE_NUM; index++){
    sprintf(filename, "preproc/preproc%d.jpg", index);
    *img = cvLoadImage(filename, 0);
}

кстати, следующая ошибка, которую вы получите, заключается в том, что вы не продвигаете указатель img после каждой итерации цикла

0 голосов
/ 21 ноября 2011

Попробуйте объявить IplImage** img;, затем img[index] = cvLoadImage(filename, 0), поскольку img - это массив указателей IplImage, а cvLoadImage () возвращает одно изображение.

0 голосов
/ 21 ноября 2011

Вы объявляете 'img' указателем на IplImage, а затем пытаетесь преобразовать его в указатель на указатель.(IplImage**) - Этот тип приведен неверно для данного конкретного случая, так как вы пытаетесь присвоить IplImage ** IplImage *.

Объявите img: IplImage ** img;

...