2012-01-19 3 views
-1

저는 C++을 처음 사용하여 .jpg 이미지를 읽고이를 바이너리 (흑백/바이 레벨/2 레벨)로 변환하는 방법을 알고 싶습니다.C++ - 이미지 변환

감사합니다.

+0

적어도 이미지 형식을 지정해야합니다. –

+0

죄송합니다 - 이미지 형식은 jpg입니다. – MusTheDataGuy

+1

C++을 처음 접했을 때 왜 심오한 부분에 뛰어 들려고합니까? 좋은 초보자 가이드 (보통 초보자에게 좋다)를 찾고 기초부터 시작하십시오. –

답변

3

더 나은 선택은 아마도 boost Gil 일 것입니다.
부스트 라이브러리는 특히 초보자를위한 것은 아니지만 종종 잘 디자인되어 있습니다.

#include <boost/gil/image.hpp> 
#include <boost/gil/typedefs.hpp> 
#include <boost/gil/extension/io/jpeg_io.hpp> 

int main() { 
    using namespace boost::gil; 

    rgb8_image_t img; 
    jpeg_read_image("test.jpg",img); 

    gray8s_view_t view(img.dimensions()); 
    color_converted_view<gray8_pixel_t>(const_view(img), view); 

    jpeg_write_view("grey.jpg", view); 
} 
1

DevIL을 사용하여 이미지를 읽을 수 있습니다. 그것은 다양한 형식을 지원합니다.

순수 흑백으로 변환하려면 전체 이미지 데이터를 살펴보고 각 픽셀의 밝기 또는 빛의 영향을 계산하고 특정 임계 값 아래로 떨어지면 검은 픽셀을 출력하고 그렇지 않으면 흰색 픽셀을 출력합니다 .

RGB (0.5, 0.5, 0.5) 임계 값에 대해 각 픽셀의 RGB 값을 확인하는 것처럼 간단하게 수행 할 수 있습니다. 그러나 이미지를 HSI으로 변환하고 각 픽셀의 강도 값을 사용하면 더 나은 결과를 얻을 수 있지만 더 많은 작업이 필요합니다.