В настоящее время я пытаюсь научиться использовать библиотеку CImg, но получаю сообщение об ошибке, которое не совсем понимаю. Документация конструкторов в библиотеке CImg также была бесполезна. Основная идея заключается в том, что я хочу создать изображение, чтобы на втором этапе (не показано) я мог написать пиксели вручную. Однако доступ к образу, созданному с помощью конструктора 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 (доступ по-прежнему запрещен).
2-й: я переключился на использование указателей:
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.