| 29 | using CodeMap = std::map<std::string, ConvCodeToFormat>; |
| 30 | |
| 31 | inline static ConvCodeToFormat str2Frmt(const std::string &str) |
| 32 | { |
| 33 | // clang-format off |
| 34 | static const CodeMap codeMap { |
| 35 | { "RGB2BGR", {NVCV_COLOR_RGB2BGR, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_BGR8 }}, |
| 36 | { "RGB2RGBA", {NVCV_COLOR_RGB2RGBA, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_RGBA8}}, |
| 37 | { "RGBA2RGB", {NVCV_COLOR_RGBA2RGB, NVCV_IMAGE_FORMAT_RGBA8, NVCV_IMAGE_FORMAT_RGB8 }}, |
| 38 | { "RGB2GRAY", {NVCV_COLOR_RGB2GRAY, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_Y8 }}, |
| 39 | { "GRAY2RGB", {NVCV_COLOR_GRAY2RGB, NVCV_IMAGE_FORMAT_Y8, NVCV_IMAGE_FORMAT_RGB8 }}, |
| 40 | { "RGB2HSV", {NVCV_COLOR_RGB2HSV, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_HSV8 }}, |
| 41 | { "HSV2RGB", {NVCV_COLOR_HSV2RGB, NVCV_IMAGE_FORMAT_HSV8, NVCV_IMAGE_FORMAT_RGB8 }}, |
| 42 | { "RGB2YUV", {NVCV_COLOR_RGB2YUV, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_YUV8 }}, |
| 43 | { "YUV2RGB", {NVCV_COLOR_YUV2RGB, NVCV_IMAGE_FORMAT_YUV8, NVCV_IMAGE_FORMAT_RGB8 }}, |
| 44 | {"RGB2YUV_NV12", {NVCV_COLOR_RGB2YUV_NV12, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_NV12 }}, |
| 45 | {"YUV2RGB_NV12", {NVCV_COLOR_YUV2RGB_NV12, NVCV_IMAGE_FORMAT_NV12, NVCV_IMAGE_FORMAT_RGB8 }}, |
| 46 | }; |
| 47 | // clang-format on |
| 48 | |
| 49 | if (auto it = codeMap.find(str); it != codeMap.end()) |
| 50 | { |
| 51 | return it->second; |
| 52 | } |
| 53 | else |
| 54 | { |
| 55 | throw std::invalid_argument("Unrecognized color code"); |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | template<typename BT> |
| 60 | inline float bytesPerPixel(NVCVImageFormat imgFormat) |