opencv绘图只显示白色
opencv从iPhone摄像头读数据,用绘制函数时如line、circle等时显示的都是白色,查资料也没找到原因。
在processImage中处理Mat对象,图像转换等都没有问题,百思不得解。。。
查找原因中发现如果用某些转换后的图像可以绘制出颜色,开始以为是回调中的mat对象属性有什么不支持,打出各种属性也没发现问题,测试中把mat转换为RGB时可以绘制颜色,但转换为RGBA时却显示为白色,大概找出原因了,就是因为缺省传过来的图中带有alpha通道,再去查看line函数:
cv::line(image_copy, pt1, pt2, CV_RGB(0, 255, 0), 4, 8, 0);
CV_RGB的定义如下:
#define CV_RGB( r, g, b ) cvScalar( (b), (g), ®, 0 )
结合alpha的定义,0是全透明,255是不透明,原因就在此了,因为设成全透明,颜色没了,但白线还会绘制出来!
改成以下代码即可,所有绘制函数里也不能直接用CV_RGB的宏定义了!
cv::line(image_copy, pt1, pt2, cvScalar(255, 0, 0, 255), 4, 8, 0);