如何把一个gray8_view_t到rgb8_view_t通过使用提升::吉尔和创建一个rgb8_image_t对象吗?

0

的问题

由于提升::吉尔不支持gray8_view_t写的BMP的格式,我要转换gray8_view_t到rgb8_view_t. 这里是我已经试过这么远。

auto rgb_view = boost::gil::planar_rgb_view(width, height, pixels, pixels, pixels, width);

像素包含的原素从gray8_view_t对象,所以我让r=g=b=素。 但 boost::gil::write_view(ofstream, rgb_view, boost::gil::bmp_tag()) 给我一个空图像。 任何想法?

更新: 通过使用东的例码 http://coliru.stacked-crooked.com/a/daa0735f774b727f我能得到的颜色对话,以编制有 color_converted_view<gil::rgb8_view_t>. 但这并不是编纂时我用的 boost::gil::write_view 创建一个图像文件的返回值 color_converted_view<gil::rgb8_view_t>. 我猜我会必须创建一个实际rgb8_image_t对象返回值。 我怎么可以转换的返回值 color_converted_view<gil::rgb8_view_t> 实际rgb8_image_t对象? 谢谢你!

#include <boost/gil.hpp>
#include <fstream>
namespace gil = boost::gil;

int main()
{
        std::ifstream in("gray8_image_t_sample.jpg", std::ios::binary);
        gil::gray8_image_t img;
        gil::read_image(in, img, gil::jpeg_tag());
        gil::gray8_view_t gv = gil::view(img);
        std::ofstream ofs1("test_image.png", std::ios::out | std::ios_base::binary);
        gil::write_view(ofs1, gv, gil::png_tag()); // This works

        auto rgbv = gil::color_converted_view<gil::rgb8_view_t>(gv);
        std::ofstream ofs2("test_image.bmp", std::ios::out | std::ios_base::binary);
        gil::write_view(ofs2, rgbv, gil::bmp_tag()); // this does not compile
} 

一个错误消息我得到

\boost\gil\color_base_algorithm.hpp(170,76): error G1A4676F8: no member named 'layout_t' in 'boost::gil::image<boost::gil::pixel<unsigned char, boost::gil::layout<boost::mp11::mp_list<boost::gil::red_t, boost::gil::green_t, boost::gil::blue_t>, boost::mp11::mp_list<std::integral_constant<int, 0>, std::integral_constant<int, 1>, std::integral_constant<int, 2>>>>, false, std::allocator<unsigned char>>' [clang-diagnostic-error]

这里是gray8_image_t文件,我在使用

boost boost-gil c++
2021-11-19 23:46:27
1

最好的答案

1

好了剩余的问题仅仅是一个模板的指定有误的论点, color_converted_view 预计,目的像素类型:

#include <boost/gil.hpp>
#include <boost/gil/extension/io/bmp.hpp>
#include <boost/gil/extension/io/jpeg.hpp>
#include <boost/gil/extension/io/png.hpp>
#include <fstream>
namespace gil = boost::gil;

int main()
{
    std::ifstream in("gray8_image_t_sample.jpg", std::ios::binary);
    gil::gray8_image_t img;
    gil::read_image(in, img, gil::jpeg_tag());
    gil::gray8_view_t gv = gil::view(img);
    gil::write_view("input.png", gv, gil::png_tag());

    auto rgbv = gil::color_converted_view<gil::rgb8_pixel_t>(gv);
    gil::write_view("output.png", rgbv, gil::png_tag());
    gil::write_view("output.bmp", rgbv, gil::bmp_tag());
}

与resuling文件:

2021-11-22 17:00:37

非常感谢你!
BunRieuCua

欢呼声。 欢迎计算器. 不要忘了投票,接受(meta.stackexchange.com/questions/5234/...)
sehe

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................