(七)OpenCV | 色度图


在图像处理时,有时我们会将灰度图转换成色度图,即伪彩映射。在OpenCV3中提供了21种映射方式,如下:

ValueNameScale
0COLORMAP_AUTUMN在这里插入图片描述
1COLORMAP_BONE在这里插入图片描述
2COLORMAP_JET在这里插入图片描述
3COLORMAP_WINTER在这里插入图片描述
4COLORMAP_RAINBOW在这里插入图片描述
5COLORMAP_OCEAN在这里插入图片描述
6COLORMAP_SUMMER在这里插入图片描述
7COLORMAP_SPRING在这里插入图片描述
8COLORMAP_COOL在这里插入图片描述
9COLORMAP_HSV在这里插入图片描述
10COLORMAP_PINK在这里插入图片描述
11COLORMAP_HOT在这里插入图片描述
12COLORMAP_PARULA在这里插入图片描述
13COLORMAP_MAGMA在这里插入图片描述
14COLORMAP_INFERNO在这里插入图片描述
15COLORMAP_PLASMA在这里插入图片描述
16COLORMAP_VIRIDIS在这里插入图片描述
17COLORMAP_CIVIDIS在这里插入图片描述
18COLORMAP_TWILIGHT在这里插入图片描述
19COLORMAP_TWILIGHT_SHIFTED在这里插入图片描述
20COLORMAP_TURBO在这里插入图片描述

示例程序:

#include<opencv2/opencv.hpp>

using namespace cv;
using namespace std;
// 色度图列表,对应关系可查看OpenCV源码或查看上表
string colormap_name(int id) {
	switch (id) {
	case COLORMAP_AUTUMN:
		return "COLORMAP_AUTUMN";
	case COLORMAP_BONE:
		return "COLORMAP_BONE";
	case COLORMAP_JET:
		return "COLORMAP_JET";
	case COLORMAP_WINTER:
		return "COLORMAP_WINTER";
	case COLORMAP_RAINBOW:
		return "COLORMAP_RAINBOW";
	case COLORMAP_OCEAN:
		return "COLORMAP_OCEAN";
	case COLORMAP_SUMMER:
		return "COLORMAP_SUMMER";
	case COLORMAP_SPRING:
		return "COLORMAP_SPRING";
	case COLORMAP_COOL:
		return "COLORMAP_COOL";
	case COLORMAP_HSV:
		return "COLORMAP_HSV";
	case COLORMAP_PINK:
		return "COLORMAP_PINK";
	case COLORMAP_HOT:
		return "COLORMAP_HOT";
	case COLORMAP_PARULA:
		return "COLORMAP_PARULA";
	case COLORMAP_MAGMA:
		return "COLORMAP_MAGMA";
	case COLORMAP_INFERNO:
		return "COLORMAP_INFERNO";
	case COLORMAP_PLASMA:
		return "COLORMAP_PLASMA";
	case COLORMAP_VIRIDIS:
		return "COLORMAP_VIRIDIS";
	case COLORMAP_CIVIDIS:
		return "COLORMAP_CIVIDIS";
	case COLORMAP_TWILIGHT:
		return "COLORMAP_TWILIGHT";
	case COLORMAP_TWILIGHT_SHIFTED:
		return "COLORMAP_TWILIGHT_SHIFTED";
	case COLORMAP_TURBO:
		return "COLORMAP_TURBO";
	}
	return "NONE";
}

int main(int argc, char** argv) {
	// 读入图像并转换为8位灰度图
	Mat image = imread("figures/earth.jpg", IMREAD_GRAYSCALE);
	// 存放输出图像
	Mat image_output;
	vector<Mat> image_vec_v, image_vec_h;
	// 生成色度图
	for (int i = 0; i < 3; ++i) {	// 垂直拼接
		image_vec_h.clear();
		for (int j = 0; j < 7; ++j) {	// 水平拼接
			Mat image_color;
			// 索引
			int k = j + 3 * i;
			// 调用函数生成色度图
			applyColorMap(image, image_color, k);
			resize(image_color, image_color, Size(200, 200));
			// 添加文本
			putText(image_color, colormap_name(k), Point(30, 180), cv::FONT_HERSHEY_DUPLEX, 0.5, Scalar::all(255), 1, cv::LINE_AA);
			// 垂直拼接
			image_vec_h.push_back(image_color);
		}
		Mat temp;
		hconcat(image_vec_h, temp);
		image_vec_v.push_back(temp);
	}
	// 水平拼接
	vconcat(image_vec_v, image_output);
	// 显示结果
	imshow("Pseudo Colored", image_output);
	waitKey(0);
	return 0;
}

输入图像及输出结果:
在这里插入图片描述

在这里插入图片描述


参考

  1. https://github.com/spmallick/learnopencv/tree/master/Colormap


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值