| 181 | } |
| 182 | |
| 183 | cv::Vec3f hsl2rgb(const cv::Vec3f& hsl) |
| 184 | { |
| 185 | const float& h = hsl[0], &s = hsl[1], &l = hsl[2]; |
| 186 | cv::Vec3f rgb; |
| 187 | if(s == 0.0f) // achromatic case |
| 188 | rgb[2] = rgb[1] = rgb[0] = l; |
| 189 | else |
| 190 | { |
| 191 | float m2; |
| 192 | if (l <= 0.5f) |
| 193 | m2 = l * (1.0f + s); |
| 194 | else |
| 195 | m2 = l + s - l * s; |
| 196 | |
| 197 | float m1 = 2.0f * l - m2; |
| 198 | |
| 199 | rgb[0] = hsl_value (m1, m2, h * 6.0f + 2.0f); |
| 200 | rgb[1] = hsl_value (m1, m2, h * 6.0f); |
| 201 | rgb[2] = hsl_value (m1, m2, h * 6.0f - 2.0f); |
| 202 | } |
| 203 | |
| 204 | return rgb; |
| 205 | } |
| 206 | |
| 207 | cv::Vec4f rgb2cmyk(const cv::Vec3f& rgb, float pullout) |
| 208 | { |
nothing calls this directly
no test coverage detected