2011-07-26 5 views
2

画像ビューからピクセルまたはチャンネルタイプを抽出する正しい方法を見つけることができません。私はgray8_view_tの場合、以下のpod_tを 'unsigned char'にすることを考えています。単純なViewType :: pixel_tはありません。関数PixelFooでこのタイプの適切な定義は何ですか?Boost :: GILビュータイプからチャンネルタイプを抽出するには?

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); 
    } 

答えて

0

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 
} 
+0

どのようにシンプル。ありがとう。 – totowtwo

0

これは私の現在の回避策ですが、必要なタイプに到達するための方法が提供されていると確信しています。

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; 
}; 
関連する問題