Я следовал за CImg руководство и у меня это отлично работает. Однако, если я пытаюсь загрузить другое изображение (кроме lena.jpg), я получаю ошибку переполнения стека.
Например, это работает:
CImg<float> image;
string filePath = "C:/Users/zzz/Documents/lena.jpg";
image.load(filePath.c_str());
Но это дает ошибку:
CImg<float> image;
string filePath = "C:/Users/zzz/Documents/anotherimage.jpg";
image.load(filePath.c_str());
Ошибка:
Необработанное исключение в 0x77bb15de в LoadImageTest.exe: 0xC00000FD: переполнение стека.
Я думал, что переполнение стека было вызвано слишком большим «anotherimage.jpg», поэтому я также попробовал действительно маленькое изображение (16×16 пикселей). Это привело к той же ошибке.
У кого-нибудь есть предложения относительно того, почему это происходит?
Полный код:
#include "stdafx.h"#include <iostream>
#include "CImg.h"
using namespace cimg_library;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
CImg<float> image;
// This works...
string filePath = "C:/Users/zzz/Pictures/lena.jpg";
// This doesn't work...
// string filePath = "C:/Users/zzz/Pictures/small.jpg";
image.load(filePath.c_str());
CImgDisplay main_disp(image, "The image");
while (!main_disp.is_closed())
{
main_disp.wait();
}
return 0;
}
Выглядит странно Вы уверены, что это действительно файл в формате JPG? Использует ли он некоторые специальные форматы JPEG (B&Вт, 12 бит?, …).
Других решений пока нет …