我正在使用OpenCV,并且我有一个Mat对象,大小为1024 * 1024(从照片中提取并进行了处理),其值在[1..25]范围内。例如:

Mat g;
g=[1,5,2,14,13,5,22,24,5,13....;
21,12,...;
..
.];

我想将这些值表示为图像。它仅是用于显示不同区域的插图图像,每个区域都带有颜色。
例如:所有等于1的值等于红色,等于14的值等于蓝色,依此类推。

然后构造并显示这张照片。

有人知道我应该如何进行吗?

谢谢!

最佳答案

colormaps,但是如果您的数据仅在[0..25]范围内,它们将无济于事。因此,您可能需要发布自己的版本:

   Vec3b lut[26] = {
        Vec3b(0,0,255),
        Vec3b(13,255,11),
        Vec3b(255,22,1),
        // all the way down, you get the picture, no ?
   };

   Mat color(w,h,CV_8UC3);
   for ( int y=0; y<h; y++ ) {
       for ( int x=0; x<w; x++ ) {
           color.at<Vec3b>(y,x) = lut[ g.at<uchar>(y,x) ];
          // check the type of "g" please, i assumed CV_8UC1 here.
          // if it's CV_32S, use g.at<int>  , i.e, you need the right type here
       }
   }

10-08 08:46