【发布时间】:2019-06-03 23:03:49
【问题描述】:
我正在按照一些说明将折线绘制到图像中(使用 opencv),但我不知道为什么从十六进制颜色转换为标量颜色时我只得到黑色。这是我的代码:
//convert hex to rgb
const char *cStr = [obj.backColor cStringUsingEncoding:NSASCIIStringEncoding]; //FF0000
long x = strtol(cStr+1, NULL, 16);
unsigned char r, g, b;
b = x & 0xFF;
g = (x >> 8) & 0xFF;
r = (x >> 16) & 0xFF;
cv::polylines(mat, v, true, cv::Scalar((int)(r/255.0), (int)(g/255.0), (int)(b/255.0), 255), 4);
我调试然后得到:
x long 16711680
r unsigned char '\xff'
g unsigned char '\0'
b unsigned char '\0'
谁能告诉我原因?谢谢。
【问题讨论】: