我目前正在尝试学习如何使用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
如果能帮助我们理解这一点,我们将不胜感激!
最好的
蓝色
编辑:我又试了两个,但不幸的是这两个都不起作用。
第一:我也尝试了.data()函数,但是没有用。更改数据类型(浮点型、整型、无符号字符)也没有解决问题,只是给出了一个错误消息,即现在整个事物将指向一个空向量(仍然拒绝访问)。
第二:我改用指针:
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。
发布于 2020-03-15 17:42:05
切片数不要设置为0而应设置为1。否则,您将得到一个没有像素的空图像0x0x0x0,从而导致错误的内存访问。
https://stackoverflow.com/questions/60685142
复制相似问题