【发布时间】:2017-03-16 23:04:24
【问题描述】:
我正在使用 vs2015,创建了一个 win32 c++ 控制台应用程序 这提供了一个纯本机 c++ 应用程序,而我还有一些其他示例正在工作。 此演示代码不起作用,问题与 lenna.png 或 lenna.jpg 的加载有关
每次我收到无法识别图像文件的错误。 (我什至使用了来自维基百科的原始 lenna)但由于某些未知原因它不起作用,为了排除路径问题我什至将 lenna 放在“d:\\lenna.jpg”。
我不知道为什么它不起作用,有什么想法吗?
cimg 是不是太旧了,现在不认识 jpg 了??
#include "CImg.h"
#include "stdafx.h"
using namespace cimg_library;
int main() {
CImg<unsigned char> image("D:\\CODE\\Cimg-prj\\PGT\\Debug\\Lenna.png"), 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;
}
我得到的错误(所有输出):
Invalid Parameter - "C:\\Users\\Peter\\AppData\\Local\\Temp\\kY6GW46A.pnm"
'gm.exe' is not recognized as an internal or external command,
operable program or batch file.
Invalid Parameter - "C:\\Users\\Peter\\AppData\\Local\\Temp\\as88yC80.pnm"
'gm.exe' is not recognized as an internal or external command,
operable program or batch file.
Invalid Parameter - "C:\\Users\\Peter\\AppData\\Local\\Temp\\wa804U6G.pnm"
'gm.exe' is not recognized as an internal or external command,
operable program or batch file.
[CImg] * * * CImgIOException * * * [instance(0,0,0,0,00000000,non-shared)] CImg<float>::load(): Failed to recognize format of file 'Lenna.png'.
我确定 Lenna.png 是一个有效的 png 文件 (如果我重命名其扩展名 irfranview 将尝试将其重命名为 png)。
由于为 png 正确设置项目的额外复杂性,我可能无法使其工作,我下载了 zlib 和 libpng,但不确定如何将它们添加到项目中(以及它们的一堆文件?,它们不是像 cimg 这样的单个 dll 或 .h 文件,我需要添加所有这些文件吗???)
【问题讨论】:
-
请缩进你的代码。
-
我担心长行会变得不可读,并且由于代码很短,每行大多只有 1 个命令,所以我这样写
-
相信我,它会更容易阅读它的缩进。必要时拆分长行。