2017-09-05 19 views
0

이미지를로드하려고 할 때마다 CImg<unsigned char>::load(): Failed to recognize format of file이라고 말하는 오류가 발생합니다. 이것은 jpg 및 png 파일 모두에서 발생합니다.CImg으로 이미지를로드 할 수 없습니다

나는 cimg_use_pngcimg_use_jpeg를 정의하는 말을 이것에 대해 다른 게시물을 발견했다, 그러나 나는 png.njpeglib.h 필요로 컴파일이 날 errorstelling 얻을. 내가 이걸 어디에서 구해야하는지 모르겠다.

어디서 잘못되었는지 모르겠다. 그래서 구체적으로 무엇을 물어야할지 모르겠다. 뭐가 잘못 됐어?

+0

나는 작동하지 않았다. libjpeg의 미리 컴파일 된 버전을 발견했지만 일단 원래 오류 (파일 형식을 인식하지 못함)를 설정하면 다시 나타납니다. 나는 결국 stb_image로 전환했다. – Alex

+0

죄송합니다. 어떤 Windows 버전을 사용하고 있습니까? Visual Studio를 사용하고 있습니까? 그렇다면 어떤 버전입니까? –

+0

Windows 10 및 VS2017 커뮤니티 또한 기본 빈 C++ 솔루션을 사용합니다. – Alex

답변

2

JPEG 이미지를 열려면 libjpeg을 설치하고 이미지를 컴파일하고 링크해야합니다.

PNG 이미지를 열려면 libpnglibz (압축 용)을 설치하고 이미지를 컴파일하고 링크해야합니다.

현재 NetPBM 형식 이미지 (예 : PBM, PGM 및 PPM)를 사용할 수 있어야합니다.


가 가

글쎄, 노력이 고통스러운 일 후에 어떻게 지구에 설치하고 그것으로 libjpeg을 통합하는 비주얼 스튜디오 2017 작품과 방법을 해결하기 위해, 지금 CIMG 및 libjpeg를 설치하는 방법을 설명 할 수 Windows에서.

단계 1

당신은 당신이 SP1 이상으로 윈도우 7 필요 의미 비주얼 스튜디오 2017가 설치되어 있어야합니다. 을 설치하는 경우, "윈도우 8.1 SDK"를 포함하도록 IJG website에서

enter image description here

2 단계

다운로드 libjpeg해야합니다. 나는 그것이 최신 인 것처럼 jpegsr9b.zip를 잡았다.

enter image description here

3 단계

의 압축을 풀고 파일과 홈 디렉토리에 libjpeg라는 디렉토리에 저장합니다.

4 단계

이동 에 시작> 모든 프로그램> 방금 압축을 푼 디렉토리에 VS2017

이동을 위해 마이크로 소프트 비주얼 스튜디오 2017> Visual Studio 도구> 개발자 명령 프롬프트.

5 이제 win32.mak라는 파일을 찾을 필요가가는

cd libjpeg 
cd jpeg-9b 

단계 : 즉,이 같은 것입니다. 나는 C:\Program Files\Microsoft SDKs\Windows\v7.0\Include에 내 것을 발견했다. Windows 8.1 SDK를 사용하고 있다면 어딘가에있을 것입니다. 어쨌든, 어디에 있든지간에 포함 디렉토리를 Include에 추가해야합니다. 그래서 내가 그랬어 :

set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v7.0\Include 

단계

6 이제 SLN 얻을 nmake을 실행 - 몇 가지 이상한 마이크로 소프트 "솔루션" 파일을.

nmake -f makefile.vc setup-v10 

그리고 당신은 파일 jpeg.sln을 호출되는합니다 - 만세 : 명령입니다!

7 단계

이제 비주얼 스튜디오 2017를 시작하고 방금 만든 jpeg.sln 파일을 열고 프로젝트를 빌드합니다. libjpeg 디렉토리에 Release 디렉토리가 생성되고 Release 디렉토리에는 jpeg.lib이라는 디렉토리가 생성됩니다. 이제 libjpeg을 설치했습니다.

enter image description here

8 단계

닫기 해당 프로젝트, 새로운 C++ 명령 줄 프로젝트를 시작하고 CIMG 기반 프로그램을 작성. Github에서

#define cimg_use_jpeg 
#include "CImg.h" 
using namespace cimg_library; 
int main() { 
    CImg<unsigned char> img("C:\\Users\\Mark\\test.jpg"); 
    img.display("Image"); 
    return 0; 
} 

9 단계

다운로드 CImg.h 및 홈 디렉토리에 CImg라는 디렉토리에 저장 : 나는 이제까지 단순한 썼다.

10 단계

(가) (CImglibjpeg에 대한) 파일을 포함 할 경우 지금 비주얼 스튜디오를 말해 (libjpeg에 대한) 라이브러리 파일은 여기서

enter image description here

11 단계

이제 알려 주시기 바랍니다. Visual Studio를 사용하면 libjpeg과 연결할 2017 :

enter image description here

당신이 컴파일 링크하고 CIMG 프로그램 및로드 JPEG 파일을 실행하고 표시 할 수 있습니다 이제 12

단계 화면에!


당신이 cmake를 사용하는 경우

enter image description here

에 리눅스/맥 OSthis answer 당신에게 방법을 보여줍니다. 명령 줄에서 맥 OS에 컴파일하는 경우


, 당신은 당신이 화면에 이미지를 표시하는 경우 XQuartz가 설치되어 있어야합니다, 당신은 이런 일을 할 것입니다 :

g++ -std=c++11 sample.cpp -o sample -I /opt/X11/include -L /opt/X11/lib -lX11 -ljpeg -lpng -lz 
+0

Windows에서'libjpeg '를 설치하고 링크하는 방법에 대한 내 답변을 업데이트했습니다. –