2017-03-16 21 views
-2

나는 vs2015를 사용하여 Win32 C++ 콘솔 앱을 만들었습니다 이것은 순수한 기본 C++ 응용 프로그램을 제공합니다. 이 데모 코드가 작동하지 않습니다. lenna.png 또는 lenna.jpg를로드 할 때 문제가 발생합니다.cimg로드 lenna 이미지

이미지 파일이 인식되지 않는 오류가 발생할 때마다. (나는 원래의 lenna를 wikipedia에서 사용하기까지했다.) 그러나 path problem을 제외하기 위해 알려지지 않은 이유로 작동하지 않는다. 심지어 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; 
} 

오류는 내가 얻을 수 (모든 출력) :

가 잘못된 매개 변수 - "C : \ 사용자 \ 피터 \의 AppData \ 로컬 \ 온도 \ kY6GW46A.pnm" 'gm.exe'는 인식되지 않습니다 내부 또는 외부 명령으로 작동 가능 프로그램 또는 배치 파일. 잘못된 매개 변수 - "C : \ Users \ Peter \ AppData \ Local \ Temp \ as88yC80.pnm" 'gm.exe'는 내부 또는 외부 명령 실행 가능 프로그램 또는 배치 파일로 인식되지 않습니다. 잘못된 매개 변수 - "C : \ Users \ Peter \ AppData \ Local \ Temp \ wa804U6G.pnm" 'gm.exe'는 내부 또는 외부 명령 실행 가능 프로그램 또는 배치 파일로 인식되지 않습니다.

[CImg] * * * CImgIOException * * * [인스턴스 (000000000000, 비공유)] CImg :: load() : 파일 'Lenna.png'의 형식을 인식하지 못했습니다. .

Lenna.png는 유효한 png 파일 입니다 (확장명을 irfranview로 변경하면 이름을 png로 다시 변경하려고합니다).

png에 대해 프로젝트를 올바르게 설정해야하기 때문에 zlib 및 libpng을 다운로드했지만 프로젝트에 파일을 추가하는 방법이 확실하지 않아서 작동하지 않을 수 있습니다. 그들의 단일 dll 또는 cimg 같은 .h 파일이 모든 파일을 추가해야합니까 ???)

+0

* 코드를 들여 쓰시기 바랍니다. –

+0

나는 긴 줄이 읽을 줄 모르는 걱정이 들었다. 코드는 줄 당 1 줄 정도의 짧은 명령이기 때문에 나는 이것을 – user3800527

+0

과 같이 썼다. 나는 그것을 들여 쓰기 쉽다. 필요한 경우 긴 줄을 분할하십시오. –

답변

0

CImg이 ImageMagick에 의존하지 않고 PNG 파일을로드 할 수있게하려면 다음과 같이 정의해야합니다. 매크로 앞에 CImg 헤더 파일을로드합니다.

#define cimg_use_png 1 
#include "CImg.h" 

PNG 압축시에는 GDI32 라이브러리와 libpng 및 libz 라이브러리도 연결해야합니다.

+0

또 다른 예 (앵무새 예제) 나는 GDI32를 연결해야만하지 않았다. 그것은 png/jpg를 읽는 데 필요한 요구 사항입니까? (btw 여전히 답을 테스트해야합니다. 나중에 작동하는지 확인합니다) – user3800527

+0

지금까지는 작동하지 못했습니다. 저는 cimg로 시작하고 있습니다. 그것의 분명히 apperently zlib과 libpng 그냥 일부 DLL을 추가 할 수 없습니다. 이 작업을 완료하려면 예제 코드를 알고 계십니까? 블렌더 렌더링 이미지 용 필터를 새로 만들려고합니다. 이미지 수학을 계산했지만 cimg가 두통을 겪고 있습니다. – user3800527

+0

죄송합니다. Visual Studio 또는 Windows를 사용하지 않습니다. Linux와 Mac에서 잘 작동하며 CImg은 확실히 날짜가 없습니다. 주위를 둘러보고 GDI32 이외의 Windows에만 해당하는 항목을 찾을 수 있는지 확인합니다. –