利用opencv的putText施加scalar定义的颜色,显示不对?

问题:利用opencv的putText施加的scalar定义的颜色显示不对?

解答:

    1、语法问题,不做解释

    2、自己定义的颜色元素,在叠加到新的Mat上时,未考虑到图像的通道是否一致。

      经常有同学利用putText函数定义彩色打印,然后在灰度图像上显示出来。错误示例:

sprintf(strTemp, "cap_%08d_R.raw", imageNum);
namedWindow(WINDOWSNAME, 0);
moveWindow(WINDOWSNAME, 0, 0);
resizeWindow(WINDOWSNAME, 640, 480);
putText(imageGrayMat, strTemp, Point(40, 40), FONT_HERSHEY_SIMPLEX, 1, Scalar(255, 0, 0), 3, 8);
imshow(WINDOWSNAME, imageGrayMat);

通过上述代码,无论如何修改Scalar(255, 0, 0)中的值,均无法显示出彩色图像,自己却查不出原因。

正确的方法如下,将灰度图像先转化为三通道彩色图像,然后在施加打印信息。

sprintf(strTemp, "cap_%08d_R.raw", imageNum);
namedWindow(WINDOWSNAME, 0);
moveWindow(WINDOWSNAME, 0, 0);
resizeWindow(WINDOWSNAME, 640, 480);
cvtColor(imageGrayMat, imageColorMat, COLOR_GRAY2BGR);//单通道转化为三通道图像
putText(imageColorMat, strTemp, Point(40, 40), FONT_HERSHEY_SIMPLEX, 1, Scalar(255, 0, 0), 3, 8);
imshow(WINDOWSNAME, imageColorMat);

猜你喜欢

转载自blog.csdn.net/qq_15211883/article/details/83620716