C++ CImg:无法识别jpg格式 #包括 #包括 #包括“CImg.h” 使用名称空间cimg_库; 使用名称空间std; int main(){ CImg图像(“lena.jpg”)、visu(500400,1,3,0); 常量无符号字符红色[]={255,0,0},绿色[]={0255,0},蓝色[]={0,0255}; 返回0;}

C++ CImg:无法识别jpg格式 #包括 #包括 #包括“CImg.h” 使用名称空间cimg_库; 使用名称空间std; int main(){ CImg图像(“lena.jpg”)、visu(500400,1,3,0); 常量无符号字符红色[]={255,0,0},绿色[]={0255,0},蓝色[]={0,0255}; 返回0;},c++,windows,codeblocks,cimg,C++,Windows,Codeblocks,Cimg,当我编译这段代码时,出现错误:CImg::load():无法识别文件“lena.jpg”的格式。有什么建议吗 我安装了imageMagick,但错误仍然存在。除了“lena.jpg”之外,您是否尝试过其他图像文件?“lena.jpg”是否与当前程序位于同一目录中?你用什么编译器 这个例子行得通吗(如果行得通,就没有意义了) #包括“CImg.h” 使用名称空间cimg_库; int main(){ CImg图像(“lena.jpg”)、visu(500400,1,3,0); 常量无符号字符红色[

当我编译这段代码时,出现错误:CImg::load():无法识别文件“lena.jpg”的格式。有什么建议吗


我安装了imageMagick,但错误仍然存在。

除了“lena.jpg”之外,您是否尝试过其他图像文件?“lena.jpg”是否与当前程序位于同一目录中?你用什么编译器

这个例子行得通吗(如果行得通,就没有意义了)

#包括“CImg.h”
使用名称空间cimg_库;
int main(){
CImg图像(“lena.jpg”)、visu(500400,1,3,0);
常量无符号字符红色[]={255,0,0},绿色[]={0255,0},蓝色[]={0,0255};
图像模糊(2.5);
CImgDisplay main_disp(图像,“点击一个点”)、draw_disp(视觉,“强度剖面”);
而(!main_disp.is_closed()&&!draw_disp.is_closed()){
main_disp.wait();
如果(主显示按钮()和主显示鼠标y()>=0){
const int y=main_disp.mouse_y();
可视化填充(0)。绘制图形(图像获取裁剪(0,y,0,0,图像宽度()-1,y,0,0),红色,1,1,0255,0);
可视化绘制图形(image.get_裁剪(0,y,0,1,image.width()-1,y,0,1),绿色,1,1,0255,0);
可视化绘制图形(图像获取裁剪(0,y,0,2,图像宽度()-1,y,0,2),蓝色,1,1,0255,0)。显示(绘制显示);
}
}
返回0;
}
资料来源:

我注意到文档中说,如果安装了imageMagick,它只支持jpg,可能是您在那里做了一些错误的事情,并且没有正确安装

编辑:

这行吗

#include "CImg.h"
using namespace cimg_library;
int main() {
  CImg<unsigned char> image("lena.jpg"), visu(500,400,1,3,0);
  const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 };
  image.blur(2.5);
  CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile");
  while (!main_disp.is_closed() && !draw_disp.is_closed()) {
    main_disp.wait();
    if (main_disp.button() && main_disp.mouse_y()>=0) {
      const int y = main_disp.mouse_y();
      visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.width()-1,y,0,0),red,1,1,0,255,0);
      visu.draw_graph(image.get_crop(0,y,0,1,image.width()-1,y,0,1),green,1,1,0,255,0);
      visu.draw_graph(image.get_crop(0,y,0,2,image.width()-1,y,0,2),blue,1,1,0,255,0).display(draw_disp);
      }
    }
  return 0;
}
#包括“CImg.h”
使用名称空间cimg_库;
int main(){
CImg img(640400,1,3);//定义一个640x400彩色图像,每个颜色分量8位。
img.fill(0);//将像素值设置为0(颜色:黑色)
无符号字符紫色[]={255,0255};//定义紫色
img.draw_text(100100,“Hello World”,紫色);//在坐标(100100)处绘制一个紫色的“Hello World”。
display(“我的第一个CImg代码”);//在显示窗口中显示图像。
返回0;
}

要在CImg中启用本机JPG文件支持,请在包含
CImg.h
之前添加以下内容:

#include "CImg.h"
using namespace cimg_library;
int main() {
  CImg<unsigned char> img(640,400,1,3);  // Define a 640x400 color image with 8 bits per color component.
  img.fill(0);                           // Set pixel values to 0 (color : black)
  unsigned char purple[] = { 255,0,255 };        // Define a purple color
  img.draw_text(100,100,"Hello World",purple); // Draw a purple "Hello world" at coordinates (100,100).
  img.display("My first CImg code");             // Display the image in a display window.
  return 0;
}
并将您的代码链接到
libjpeg
库。它对我来说完美无瑕。 如果不使用此选项,CImg将尝试对ImageMagick的转换工具执行外部调用以加载文件,这不是最干净的解决方案。在CImg中使用libjpeg肯定更好。
这对其他图像格式(tiff、png等)也适用。

对我来说,使用的是文件的绝对路径,而不仅仅是文件名:

例:改变这一点: CImg图像(“lena.jpg”)、visu(500400,1,3,0)

为此: CImg图像(“C:\Users\youruser\Desktop\lena.jpg”),visu(500400,1,3,0)


当然,此路径会因文件所在位置的不同而有所不同。

我正在学习本教程,但它不起作用。他们说我需要安装imageMagick,但那又怎么样?我在用windows!我不知道我要做什么才能将这个包链接到我的项目。也许可以检查一下你是否完成了这里列出的内容:?(这是针对VS2005的,有点过时了)。我如何在我的项目上链接libjpeg?我在这里下载了:但它是标题、代码和其他文件的集合。这取决于您使用的编译器、系统等。。“将库链接到C++项目”可能超出了范围,但您可以很容易地在某处找到答案(例如:这里):呵呵。这就解释了为什么jpeg已经可以工作了。但关于编译,指向一个名为“linuxquestions”的网站似乎。。。无益的@PSlayer你有没有想过如何链接libjpeg-visualstudio的工具?
#include "CImg.h"
using namespace cimg_library;
int main() {
  CImg<unsigned char> img(640,400,1,3);  // Define a 640x400 color image with 8 bits per color component.
  img.fill(0);                           // Set pixel values to 0 (color : black)
  unsigned char purple[] = { 255,0,255 };        // Define a purple color
  img.draw_text(100,100,"Hello World",purple); // Draw a purple "Hello world" at coordinates (100,100).
  img.display("My first CImg code");             // Display the image in a display window.
  return 0;
}
#define cimg_use_jpeg
#include "CImg.h"
....