上述のサンプルで, saturate_cast という演算子に気付いた人もいるかもしれません. OpenCV では,すべてのピクセルがこのように処理されます. つまり,画像処理の結果が 0 から 255 の範囲にピクセル値を持つ 8 ビット画像である場合,各出力ピクセル値はこの有効範囲内に収まるように切り詰められます:
そして,8 ビット符号あり,16 ビット符号あり/符号なしの型についても同様の規則が適用されます.この「飽和」動作(下位ビットを持ってくるだけの通常の C 言語の「ラッピング」動作とは異なります)は,単純な cv::add から cv::cvtColor , cv::resize , cv::filter2D までの,すべての画像処理関数に実装されています. これは OpenCV 2.x の新機能というわけではなく,ごく初期のバージョンから存在していました.新バージョンでは,ユーザ関数でもこの動作を簡潔に実装できるように,特別な saturate_cast テンプレート演算子が導入されました.