C ++ - преобразование изображений - PullRequest
0 голосов
/ 20 января 2012

Я новичок в C ++ и хотел бы знать, как читать изображения в формате .jpg, а затем преобразовать его в двоичный файл (черный и белый / двухуровневый / двухуровневый)?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 20 января 2012

Ваш лучший выбор, вероятно, 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 голос
/ 20 января 2012

Вы можете использовать DevIL , чтобы прочитать изображение.Он поддерживает множество различных форматов.

Чтобы преобразовать его в чисто черный и белый, вы затем просматриваете все данные изображения и вычисляете интенсивность или световой вклад каждого пикселя, и если он падает ниже определенного порога, вывыведите черный пиксель, иначе белый пиксель.

Вы можете сделать это так же просто, как проверить значения RGB каждого пикселя по отношению к порогу RGB (0,5, 0,5, 0,5).Но вы можете получить лучшие результаты, если преобразовать изображение в HSI и использовать значение интенсивности для каждого пикселя, но это больше работы.

0 голосов
/ 20 января 2012

Существует опция для libpng , которая использовалась во многих проектах.Дополнительную информацию о том, как написать изображение в градациях серого, можно найти в этой главе на их веб-сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...