нарушение доступа к openCV Mat в стеке переполнения

Я получаю сообщение «Исключение выдается в 0x00007FFF428944E0 (opencv_world343d.dll) в … .exe: 0xC0000005: расположение чтения нарушения доступа 0x0000023339631FB8». Я прочитал некоторые посты и темы о «нарушении прав доступа», но думаю, что правильно распределяю и инициализирую память, что, по-видимому, является проблемой чаще всего.

Мой код содержит функцию «loadfits», которая загружает 16-битное изображение в градациях серого и сохраняет его в openCV cv :: Mat. Функция работает — прямо в конце перед оператором return я могу показать или сохранить изображение, и все работает отлично, внутри функции. Но когда я пытаюсь получить доступ и работать с cv :: Mat в main (), я получаю ошибку нарушения доступа.

#define DFTtypeCV CV_64FC1
#define PICtypeCV CV_16UC1  //16bit grayscale image

Mat loadfits(std::string path)
{
ifstream streamIN(path, ios::binary | ios::in);
vector<char> celyobraz_8(fitsSize*fitsSize * 2, 0);
streamIN.read(&celyobraz_8[0], fitsSize*fitsSize * 2);

... //some code

Mat fits_PICTURE_Mat = Mat(fitsSize, fitsSize, PICtypeCV, &celyobraz_8[0], Mat::AUTO_STEP);

showimg(fits_PICTURE_Mat, "fitsRaw"); //shows the correct image
return fits_PICTURE_Mat;    //returns the same image
}

Затем я использую эту функцию для инициализации и работы с cv :: Mat в main ()

Mat picZERO(fitsSize, fitsSize, PICtypeCV);
Mat picZEROd(fitsSize, fitsSize, DFTtypeCV);

picZERO = loadfits(path);
picZERO.convertTo(picZEROd, DFTtypeCV); //I get the error here

Я думал, что смогу легко решить эту ошибку, так как у меня есть правильные данные прямо перед оператором возврата функции, но, похоже, не могу понять это.

Есть идеи? Благодарю.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы [email protected]