我通过.incbin将汇编代码加载到Stm32板上的嵌入式系统内存中,并通过std :: copy将数据复制到备用缓冲区。图像显示在附加的液晶屏幕上,并用picoimage解压缩,一切都很好。我希望预先应用图像效果,我使用CImg,它似乎小巧便携。与其他人相比,我只需将标题放在工作目录中,我在下面有一个灰度代码;但是,我遇到同样的问题,因为当我试图手动改变代码时,屏幕显示为黑色。我似乎无法找到适当的解决方案。是他们的任何建议。出于某种原因,我觉得CImg不知道它是一个jpg文件,并选择加载和操作整个压缩数据。这是他们的工作吗?
CImg<uint8_t> image(_buffer,_panel->getWidth(),_panel->getHeight(),1,1,true);
int width = image.width();
int height = image.height();
//int depth = image.depth();
//New grayscale images.
//CImg<unsigned char> gray1(width,height,depth,1);
//CImg<unsigned char> gray2(width,height,depth,1);
unsigned char r,g,b;
unsigned char gr1 = 0;
unsigned char gr2 = 0;
/* Convert RGB image to grayscale image */
for(int i=0;i<width;i++){
for(int j=0;j<height;j++){
//Return a pointer to a located pixel value.
r = image(i,j,0,0); // First channel RED
g = image(i,j,0,1); // Second channel GREEN
b = image(i,j,0,2); // Third channel BLUE
//PAL and NTSC
//Y = 0.299*R + 0.587*G + 0.114*B
gr1 = round(0.299*((double)r) + 0.587*((double)g) + 0.114*((double)b));
//HDTV
//Y = 0.2126*R + 0.7152*G + 0.0722*B
gr2 = round(0.2126*((double)r) + 0.7152*((double)g) + 0.0722*((double)b));
image(i,j,0,0) = gr1;
//image(i,j,0,0) = gr2;
}
}
答案 0 :(得分:0)
cimg不解压缩jpeg图像本身,它使用你的系统jpeg库。例如,如果您使用的是debian-derivative,则在编译之前需要apt-get install libjpeg-turbo8-dev
。仔细查看cimg并确保它正在拾取标题并正确链接。