【发布时间】:2015-03-23 09:06:59
【问题描述】:
void SplitColors(unsigned char *rgb, int count, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *y, unsigned char *cb, unsigned char *cr, bool useRGBA)
{
int multiplier = useRGBA ? 4 : 3;
for (int i = 0; i < count; i++)
{
if (y || cb || cr)
{
int yy, ccb, ccr;
RGB_to_YCbCr(
rgb[i * multiplier + 0],
rgb[i * multiplier + 1],
rgb[i * multiplier + 2],
yy, ccb, ccr);
yy = fmax(0, yy); yy = fmin(255, yy);
ccb = fmax(0, ccb); ccb = fmin(255, ccb);
ccr = fmax(0, ccr); ccr = fmin(255, ccr);
if (y != NULL)
y[i] = (unsigned char)yy;
if (cb != NULL)
cb[i] = (unsigned char)ccb;
if (cr != NULL)
cr[i] = (unsigned char)ccr;
}
if (r != NULL)
r[i] = rgb[i * multiplier + 0];
if (g != NULL)
g[i] = rgb[i * multiplier + 1];
if (b != NULL)
b[i] = rgb[i * multiplier + 2];
}
}
不明白为什么 fmax 和 fmin 函数在这个函数中不起作用?我已将 yy 等声明为 int?如果我尝试将它们声明为双精度也不起作用...
【问题讨论】:
-
我正在使用
fyi -
你为什么
#include <math.h>?它是 C++,#include <cmath>
标签: c++ identifier