c++ 不使用applyColorMap 如何手动实现原本COLORMAP_HOT的颜色规律
时间: 2024-02-17 21:59:44 浏览: 115
地图染色问题C++实现
4星 · 用户满意度95%
COLORMAP_HOT 是 OpenCV 中的一种预定义颜色映射,该颜色映射将灰度图像映射到热度图,以红色表示高亮度,蓝色表示低亮度。
如果你不想使用 applyColorMap 函数,可以手动创建一个 COLORMAP_HOT 颜色规律的映射矩阵,再将灰度图像映射到热度图。
具体实现步骤如下:
1. 创建一个 256x1 的矩阵 mat,类型为 CV_8UC3,即 8 位无符号三通道矩阵。
2. 遍历矩阵 mat 的每一个像素,根据 COLORMAP_HOT 的颜色规律,给每一个像素赋值。
3. 将灰度图像与矩阵 mat 进行像素级别的映射,即可得到热度图。
下面是代码实现:
```
cv::Mat createHeatMap()
{
cv::Mat mat(256, 1, CV_8UC3);
for (int i = 0; i < 256; i++)
{
mat.at<cv::Vec3b>(i, 0) = cv::Vec3b(i, 0, 255 - i);
}
return mat;
}
cv::Mat applyHeatMap(const cv::Mat& grayImage)
{
cv::Mat heatMap = createHeatMap();
cv::Mat colorImage;
cv::applyColorMap(grayImage, colorImage, heatMap);
return colorImage;
}
```
其中,createHeatMap 函数用于创建 COLORMAP_HOT 颜色规律的映射矩阵,applyHeatMap 函数用于将灰度图像映射到热度图。
阅读全文