+ case COLOR_BGR2BGRA: case COLOR_RGB2BGRA: case COLOR_BGRA2BGR:
+ case COLOR_RGBA2BGR: case COLOR_RGB2BGR: case COLOR_BGRA2RGBA:
+ {
+ CV_Assert(scn == 3 || scn == 4);
+ dcn = code == COLOR_BGR2BGRA || code == COLOR_RGB2BGRA || code == COLOR_BGRA2RGBA ? 4 : 3;
+ bool reverse = !(code == COLOR_BGR2BGRA || code == COLOR_BGRA2BGR);
+ dst.create(sz, CV_MAKE_TYPE(depth, dcn));
+ RGB_caller(src, dst, reverse);
+ break;
+ }
+ case COLOR_BGR2BGR565: case COLOR_BGR2BGR555: case COLOR_RGB2BGR565: case COLOR_RGB2BGR555:
+ case COLOR_BGRA2BGR565: case COLOR_BGRA2BGR555: case COLOR_RGBA2BGR565: case COLOR_RGBA2BGR555:
+ {
+ CV_Assert((scn == 3 || scn == 4) && depth == CV_8U );
+ bidx = code == COLOR_BGR2BGR565 || code == COLOR_BGR2BGR555 ||
+ code == COLOR_BGRA2BGR565 || code == COLOR_BGRA2BGR555 ? 0 : 2;
+ int greenbits = code == COLOR_BGR2BGR565 || code == COLOR_RGB2BGR565 ||
+ code == COLOR_BGRA2BGR565 || code == COLOR_RGBA2BGR565 ? 6 : 5;
+ dst.create(sz, CV_8UC2);
+ toRGB5x5_caller(src, dst, bidx, greenbits, "RGB2RGB5x5");
+ break;
+ }
+ case COLOR_BGR5652BGR: case COLOR_BGR5552BGR: case COLOR_BGR5652RGB: case COLOR_BGR5552RGB:
+ case COLOR_BGR5652BGRA: case COLOR_BGR5552BGRA: case COLOR_BGR5652RGBA: case COLOR_BGR5552RGBA:
+ {
+ dcn = code == COLOR_BGR5652BGRA || code == COLOR_BGR5552BGRA || code == COLOR_BGR5652RGBA || code == COLOR_BGR5552RGBA ? 4 : 3;
+ CV_Assert((dcn == 3 || dcn == 4) && scn == 2 && depth == CV_8U);
+ bidx = code == COLOR_BGR5652BGR || code == COLOR_BGR5552BGR ||
+ code == COLOR_BGR5652BGRA || code == COLOR_BGR5552BGRA ? 0 : 2;
+ int greenbits = code == COLOR_BGR5652BGR || code == COLOR_BGR5652RGB ||
+ code == COLOR_BGR5652BGRA || code == COLOR_BGR5652RGBA ? 6 : 5;
+ dst.create(sz, CV_MAKETYPE(depth, dcn));
+ fromRGB5x5_caller(src, dst, bidx, greenbits, "RGB5x52RGB");
+ break;
+ }
+ case COLOR_BGR5652GRAY: case COLOR_BGR5552GRAY:
+ {
+ CV_Assert(scn == 2 && depth == CV_8U);
+ dst.create(sz, CV_8UC1);
+ int greenbits = code == COLOR_BGR5652GRAY ? 6 : 5;
+ fromRGB5x5_caller(src, dst, -1, greenbits, "BGR5x52Gray");
+ break;
+ }
+ case COLOR_GRAY2BGR565: case COLOR_GRAY2BGR555:
+ {
+ CV_Assert(scn == 1 && depth == CV_8U);
+ dst.create(sz, CV_8UC2);
+ int greenbits = code == COLOR_GRAY2BGR565 ? 6 : 5;
+ toRGB5x5_caller(src, dst, -1, greenbits, "Gray2BGR5x5");
+ break;
+ }
+ case COLOR_RGB2GRAY: case COLOR_BGR2GRAY: case COLOR_RGBA2GRAY: case COLOR_BGRA2GRAY: