1. 程式人生 > >利用opencv的putText施加scalar定義的顏色,顯示不對?

利用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);