2013-10-04 4 views
1

저는 이미지 처리를위한 과학적 응용 프로그램을 개발 중입니다. 그것은 이미지 (픽셀 데이터, 채널 수 등)를 저장하기위한 자체 데이터 유형을 사용합니다. 필요한 것은 일반적인 형식 (bmp, jpeg, png, 아마도 다른 형식)의 이미지를 읽고 내 내부 형식으로 변환 한 다음 일반 형식 중 하나로 다시 처리 한 다음 내보내는 기능입니다.C++ 이미지 인코딩/디코드 라이브러리

이 앱이 가능한 한 가볍기를 바라며이 목적을 위해 OpenCV 또는 ImageMagick과 같은 "무거운"라이브러리를 포함하고 싶지는 않습니다.

인기있는 형식의 이미지를 인코딩하고 디코딩하기위한 단순하고 가볍고 효율적인 C++ 라이브러리가 있습니까? 또는 내가 가지고있는 유일한 옵션은 각 형식에 대해 libjpeg 및 libpng와 같은 별도의 libs를 사용하는 것입니다. 분리 된 라이브러리 나, 때때로, 운영 체제가 (당신이 예를 들어, JPEG 윈도우와 API를 열 수 있습니다) :

어떤 조언이 감사합니다 :)

답변

3

일반적인 형식을 열하기 위해 2 가지 방법이 있습니다.

ImageMagick/OpenCV를 사용하는 데 문제가 없습니다 ... 매우 가볍습니다! 그리고 분리 된 라이브러리를 사용하는 것이 더 가볍다고 생각하더라도 각 라이브러리의 출력에서 ​​데이터를 얻기위한 공통 비트 맵 형식을 구현해야합니다 (믿어주세요. 여기에는 트릭이 있습니다 : 채널 수, 채널 순서, 픽셀 주문 [왼쪽에서 오른쪽 아래] 등) ... 음, 많은 작업!

그래서 ImageMagick/OpenCV와 같이 이미 구현 된 것을 사용하지 않으시겠습니까? 이 모든 작업은 이미 완료되었습니다! 나는 이것이 매우 좋은 선택이라고 정말로 생각한다!

+0

나는 그것을 말하고있었습니다. Magick은 예를 들어 저가형 Android 휴대 전화를 타겟팅하는 경우에도 가볍습니다. 임베디드 애플리케이션과는 별도로 (당신은 여러 종류의 문제를 겪고 있습니다), Magick이나 OpenCV를 사용하지 않는 성능이나 공간과 관련된 이유가 없습니다. – us2012

+0

글쎄요, 저의 요점은 라이브러리에서 이미지를로드하고 저장하는 것이 OpenCV 또는 ImageMagick에서만 필요하다는 것입니다. 사용하지 않는 많은 코드를 프로젝트에서 가지고 있어야합니다. 그러나 나는 바퀴를 재발 명하고 싶지 않습니다 :) 물론 어쩌면 당신 말이 맞고 내 요구에 맞는 더 가벼운 솔루션이 없을 수도 있습니다. 귀하의 회신에 감사드립니다! – Slippy

+0

ImageMagick/OpenCV 머신 비전 기능의 모든 효과와 같이 이러한 프레임 워크의 일부를 제거하고 더 가볍게 만들 수 있습니다. –

1

FreeImage를 사용하십시오.

FreeImage는 오늘날의 멀티미디어 응용 프로그램에서 필요로하는 PNG, BMP, JPEG, TIFF 및 기타 그래픽 이미지 형식을 지원하려는 개발자를위한 오픈 소스 라이브러리 프로젝트입니다. FreeImage는 사용하기 쉽고 빠르며 멀티 쓰레딩 안전하고 모든 32 비트 또는 64 비트 버전의 Windows 및 크로스 플랫폼과 호환됩니다 (Linux 및 Mac OS X 모두에서 작동).

다운로드 : http://freeimage.sourceforge.net/

관련 문제