画像を反転するテンプレート関数を作ったので載せておきます。画像幅ステップはアライメントのことを無視してるのでアライメントを考慮するならw_stepのところでアライメントを考慮した幅にするように修正必要です。
template<typename InType, typename OutType>
void InvertImageHor(
OutType *o_img,
const InType *in_img,
int width, int height, int num_channels
)
{
int w_step = width * num_channels;
const InType *in_ptr = in_img;
OutType *o_ptr = o_img;
OutType *o_end_ptr = o_ptr + w_step * height;
OutType *o_x_end_ptr;
OutType *o_c_end_ptr;
for( ; o_ptr!=o_end_ptr; )
{
o_x_end_ptr = o_ptr + w_step;
in_ptr += w_step;
for( ; o_ptr!=o_x_end_ptr; )
{
o_c_end_ptr = o_ptr + num_channels;
in_ptr -= num_channels;
for( ; o_ptr!=o_c_end_ptr; ++o_ptr, ++in_ptr )
{
*o_ptr = *in_ptr;
}
in_ptr -= num_channels;
}
in_ptr += w_step;
}
}