В настоящее время я пытаюсь научиться использовать библиотеку CImg, но получаю ошибку, которую не совсем понимаю. Документация конструкторов в библиотеке CImg также была довольно бесполезной. Основная идея c заключается в том, что я хочу создать изображение, чтобы я мог писать пиксели на втором шаге (не показан) вручную. Однако доступ к изображению, созданному с помощью конструктора CImg, по какой-то причине запрещен.
Вот минимальный пример:
#include <iostream>
#include <CImg.h>
#include "Header.h"
using namespace std;
int Main() {
cimg_library::CImg<float> img(200, 200, 0, 3, 0.0);
cout << "img is: " << img(0, 0, 0, 0) << endl; //<----------------- error occurs here
return 0;
}
Ошибка гласит: Исключение, выданное в 0x0067B693 в Test.exe: 0xC0000005: Место чтения нарушения доступа 0x00000000
Любая помощь в понимание этого было бы очень полезно!
Лучший
Синий
#
Редактировать: Я попробовал еще 2 вещи, но оба не работают, к сожалению.
1-й : Я пробовал функцию .data (), но безрезультатно. Изменение типов данных (float, int, unsigned char) также не решило проблему, кроме сообщения об ошибке о том, что все теперь будет указывать на NULL-вектор (все еще доступ запрещен).
2nd: I переключился на использование указателей:
cimg_library::CImg<unsigned char>* img = new cimg_library::CImg<unsigned char>(200, 200, 0, 3, 1);
cout << "img is: " << *img->data(0, 0, 0, 0) << endl;
Это все равно выдает почти то же сообщение об ошибке, что: Исключение: нарушение прав чтения. cimg_library :: CImg :: data (...) вернул nullptr.