如何从Boost::GIL视图类型中提取通道类型
How to extract channel type from Boost::GIL view type?
我找不到从图像视图中提取像素或通道类型的正确方法。在gray8_view_t的情况下,我希望将下面的pod_t定义为"unsigned char"。没有简单的ViewType::pixel_t。函数PixelFoo中这种类型的正确定义是什么?
template<class ViewType>
void PixelFoo(ViewType v)
{
typedef typename ViewType::x_iterator::value_type::channel_t pod_t;
pod_t maxVal = channel_traits<pod_t>::max_value();
pod_t podVal = v(0, 0); //expect error with emptyView
}
void PixelBar()
{
gray8_view_t emptyView;
PixelFoo(emptyView);
}
ViewType::value_type
应该与您期望的ViewType::pixel_t
相似。
然后,对于均匀像素类型,来自HomogeneousPixelBasedConcept的channel_type<T>::type
应该导致您正在寻找的类型:
template<class ViewType>
void PixelFoo(ViewType v)
{
typedef typename boost::gil::channel_type<typename ViewType::value_type>::type pod_t;
pod_t maxVal = channel_traits<pod_t>::max_value();
pod_t podVal = v(0, 0); //expect error with emptyView
}
这是我目前的工作,但我确信有一个提供的方法来获得我需要的类型。
template<class DestView>
struct view_traits;
template<>
struct view_traits<gray8_view_t> {
typedef bits8 channel_t;
};
template<>
struct view_traits<gray16_view_t> {
typedef bits16 channel_t;
};
template<>
struct view_traits<gray64f_view_t> {
typedef double channel_t;
};
相关文章:
- C++从通用引用中提取实际类型
- Clang 工具,用于提取给定 lambda 类型的 lambda 主体
- 将不同类型的模板参数包提取到双精度向量中会产生警告
- 在C++如何从数组中提取成员并返回成员类型的数组?
- 从 Any 包中提取和匹配 protobuf 消息类型名的首选方法
- 从具有部分专用化的boost:hana::set中提取类型失败
- 如何提取模板参数中传递的类型
- 从 std::set 中提取仅移动类型
- 需要根据读取的数据类型将ifstream提取到单独的数组中
- 如何定义变体<x,y,z>提取模板参数的子类型
- 从传递给模板函数的内部类实例中提取外部类类型
- 防止为字符串流提取运算符不支持的类型实例化模板类 (>>)
- C++ HDF5 提取复合数据类型的一个成员
- 从参数包中提取成员类型
- 如何使用 boost::p ython 从 Python 类型中提取包装的C++类型
- 从字符串中提取不同的数据类型变量
- 提取模板类中的类型以用于其他模板
- 制作解析器以提取函数名称、参数、返回类型
- 提取函数指针参数和返回类型
- 将函数参数类型提取为参数包