2011-01-01 4 views
7

하드 드라이브에서 공통 파일 형식의 이미지 파일을 읽고 한 픽셀의 색상을 변경하고 결과 이미지를 C++로 화면에 표시한다고 가정합니다.이미지를 그리는 가장 쉬운 방법은?

최소한의 코드로 위의 작업을 수행하려면 (오픈 소스) 라이브러리를 권장 하시겠습니까?

또는 어떤 라이브러리가 위의 작업을 가장 우아한 방법으로 수행 할 수 있습니까?

배경 비트 : 저는 최근에 많은 컴퓨터 그래픽 문헌을 읽었으며, 구현하기를 원하는 비교적 쉬운 픽셀 기반 알고리즘이 많이 있습니다. 그러나 알고리즘 자체는 일반적으로 구현하기 쉽지만 픽셀 단위로 이미지를 조작하고 결과를 표시하는 데 필요한 프레임 작업량으로 인해 작업이 중단되었습니다.

+1

혼자서 표시하는 것은 많은 코드 일 것이고 또한 시스템 의존적 일 것입니다. 이미 일부 GUI 라이브러리를 사용하고 있습니까? 어떤 플랫폼을 사용하고 있습니까? –

+0

Martin : 아직 소스 코드가 없습니다. (실제로 존재하지만, 처음부터 다시 시작하는 것을 망설이지는 않을 정도로 작습니다.) – Benno

+3

영원한 C++ 질문입니다. 이미 5 장의 upvote로 백업. 20 년 이상의 그래픽 사용자 인터페이스가 주류가 된 후에도 이미지를 보여주는 핵심적인 문제는 여전히 언어 실무자들의 조잡함을 돋보이게합니다. 안좋다. –

답변

10

CImg 라이브러리는 사용하기 쉽습니다.

CImg<unsigned char> img("lena.png");    // Read in the image lena.png 
const unsigned char valR = img(10,10,0,0);  // Read the red component at coordinates (10,10) 
const unsigned char valG = img(10,10,0,1);  // Read the green component at coordinates (10,10) 
const unsigned char valB = img(10,10,2);   // Read the blue component at coordinates (10,10) (Z-coordinate omitted here). 
const unsigned char avg = (valR + valG + valB)/3; // Compute average pixel value. 
img(10,10,0) = img(10,10,1) = img(10,10,2) = avg; // Replace the pixel (10,10) by the average grey value. 
CImgDisplay main_disp(img, "Modified Lena");  // Display the modified image on the screen 
img.save("lena_mod.png");       // Save the modified image to lena_mod.png 

강력한 이미지 처리 라이브러리로 사용할 수도 있습니다. 예제 here을 참조하십시오.

+0

간단한 프로그램 ("최소한의 코드를 사용하여"요청) 이었기 때문에 이미지를 표시하지 않고 수정 된 이미지 만 출력하고 별도의 이미지 뷰어 프로그램을 사용하십시오. – Raedwald

+0

@Raedwald "화면에 결과 이미지를 표시합니다"<- 나에게 인상을줍니다. OP는 프로그램에서 이미지 뷰어를 시작하려고합니다. 그것은 한 줄이지만 IMHO를 무서워 할 필요가 없습니다. – marcog

+0

좋은 하나! 내가 틀리지 않다면, 그것은 LibPNG & LibJPEG에 달려 있습니까? – Viet

4

특히 컴퓨터 그래픽에 대한 이론적 연구를하고 있다면 OpenCV 라이브러리를 살펴 봐야합니다.

+0

더 호화로운 대안은 인텔 성능 프리미티브 라이브러리입니다. – 9dan

+0

픽셀 이상으로 원한다면 +1을 선택하십시오. @ 9dan을 웬일인지, OpenCV가 인텔 라이브러리에서 시작했다고 생각했습니다. ? – kenny

0

대상 응용 프로그램이 Windows 전용 인 경우 herehere으로 설명한 GDI +를 사용할 수 있습니다. 그리고 here은 GDI +를 사용하는 이미지 조작을위한 많은 개념 증명 중 하나입니다.

EDIT : 라이브러리는 오픈 소스가 아니며 Windows XP (98 및 2000에 설치할 수 있음) 이후 OS에 포함되어 있으며 API는 공개되어 있으며 더 복잡한 형태로 사용될 수있는 많은 이미지 처리 기능을 제공합니다 알고리즘.

0

+1 CImg의 경우이 기능은 다중 플랫폼 프레임 워크에서 이미지 처리 알고리즘을 매우 쉽고 빠르게 구현할 수 있도록 설계되었습니다.

관련 문제