| 205 | } |
| 206 | |
| 207 | cv::Vec4f rgb2cmyk(const cv::Vec3f& rgb, float pullout) |
| 208 | { |
| 209 | float c = 1.0f - rgb[0]; |
| 210 | float m = 1.0f - rgb[1]; |
| 211 | float y = 1.0f - rgb[2]; |
| 212 | float k = 1.0f; |
| 213 | |
| 214 | if(c < k) k = c; |
| 215 | if(m < k) k = m; |
| 216 | if(y < k) k = y; |
| 217 | |
| 218 | k *= pullout; |
| 219 | if(k < 1.0f) |
| 220 | { |
| 221 | c = (c - k) / (1.0f - k); |
| 222 | m = (m - k) / (1.0f - k); |
| 223 | y = (y - k) / (1.0f - k); |
| 224 | } |
| 225 | else |
| 226 | { |
| 227 | c = 0.0f; |
| 228 | m = 0.0f; |
| 229 | y = 0.0f; |
| 230 | } |
| 231 | |
| 232 | return cv::Vec4f(c, m, y, k); |
| 233 | } |
| 234 | |
| 235 | cv::Vec3f cmyk2rgb(const cv::Vec4f& cmyk) |
| 236 | { |
nothing calls this directly
no outgoing calls
no test coverage detected