我目前尝试学习如何使用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;
}
错误显示为:在Test.exe中的0x0067B693处引发异常:0xC0000005:访问冲突读取位置0x00000000
对理解这一点的任何帮助将不胜感激!
最佳
蓝色
#编辑:我又尝试了2件事,但不幸的是,它们都无法正常工作。
1st:我也尝试了.data()函数,但无济于事。更改数据类型(float,int,unsigned char)也无法解决问题,除了给出错误消息,即整个事件现在都指向NULL向量(仍然拒绝访问)。
第二:我切换到使用指针:
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。
不要将切片数设置为0但设置为1。否则,您将得到一个没有像素的空图像0x0x0x0,从而导致错误的内存访问。