2012-01-19 51 views
-1

我是C++新手,想知道如何讀取.jpg圖像,然後將其轉換爲二進制(黑白/雙層/兩層)?C++ - 圖像轉換

謝謝。

+0

您至少需要指定圖像格式。 –

+0

道歉 - 圖像格式爲jpg。 – MusTheDataGuy

+1

如果你是C++的新手,你爲什麼試圖跳入深層?找一本好的初學者指南(他們通常對初學者很好),並從基礎開始。 –

回答

3

你最好的選擇可能是boost Gil
Boost庫不是特別適合初學者,但它們通常設計得很好。

#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值與RGB閾值(0.5,0.5,0.5)一樣。但是,如果將圖像轉換爲HSI併爲每個像素使用強度值,則可能會獲得更好的結果,但這樣做更有用。