如何从boost :: gil均匀像素类型中提取通道POD类型?

时间:2010-03-30 12:06:07

标签: c++ image graphics boost boost-gil

我有<PIXEL>模板上的类,假设是boost::gil像素类型之一(目前只有gray8_pixel_tgray16_pixel_t,我只有期望在将来支持同类像素类型,例如rgb8_pixel_t

该类需要根据像素类型获得unsigned charunsigned short;我假设这已经隐藏在像素类中,但PIXEL::value_typePIXEL::channel_typePIXEL::channel_type::value type似乎都不是我想要的。

诀窍是什么?

(我当然可以通过一些模板专用的帮助器结构使用类型间接来获取这些信息:

template <typename PIXEL> struct types_for
  {};
template <> struct types_for<boost::gil::gray8_pixel_t>
  {typedef unsigned char channel_type;};
template <> struct types_for<boost::gil::gray16_pixel_t>
  {typedef unsigned short channel_type;};

但是GIL肯定必须提供相同的东西,如果我能找到它......)

1 个答案:

答案 0 :(得分:1)

啊哈......这似乎可以解决问题:

typename boost::gil::channel_type<PIXEL>::type