C ++ - 图像转换

时间:2012-01-19 20:20:49

标签: c++ image-processing

我是C ++的新手,想知道如何读取.jpg图像,然后将其转换为二进制(黑白/双级/两级)?

谢谢。

3 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用DevIL来阅读图片。它支持许多不同的格式。

要将其转换为纯黑色和白色,您需要浏览整个图像数据并计算每个像素的强度或光线贡献,如果它低于某个阈值,您将输出黑色像素,否则输出白色像素。

您可以简单地检查每个像素的RGB值与RGB(0.5,0.5,0.5)的阈值。但是如果将图像转换为HSI并使用每个像素的强度值,则可能会获得更好的效果,但这样做更有效。

答案 2 :(得分:0)

libpng有一个选项,正如许多项目所使用的那样。有关如何编写灰度图像的其他说明,请查看this chapter from their website.