opencv学习-007-伪色彩函数applyColorMap和LUT

opencv学习-007-伪色彩函数applyColorMap和LUT

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;
void customColorMap(Mat &image);
int main(int argc, const char *argv[])
{
	Mat src = imread("E:/Desktop/y.jpg");
	if (src.empty())
	{
		printf("could not load image...\n");
		return -1;
	}
	Mat gray, dst;
	// 使用LUT
	applyColorMap(src, dst, COLORMAP_SUMMER);
	// 显示结果
	imshow("colorMap", dst);

	cvtColor(src, gray, COLOR_BGR2GRAY);
	imshow("gray", gray);
	customColorMap(gray);

	waitKey(0);
	return 0;
}

void customColorMap(Mat &image) {
	int lut[256];
	for (int i = 0; i < 256; i++) {
		if (i < 127)
			lut[i] = 0;
		else
			lut[i] = 255;
	}

	int h = image.rows;
	int w = image.cols;
	for (int row = 0; row < h; row++) {
		for (int col = 0; col < w; col++) {
			int pv = image.at<uchar>(row, col);
			image.at<uchar>(row, col) = lut[pv];
		}
	}
	imshow("lut demo", image);
}

运行结果:
在这里插入图片描述


1. 伪色彩函数applyColorMap

在OpenCV库中,常见的伪色彩模式可以通过 applyColorMap(InputArray src, OutputArray dst, int colormap)直接调用。

void applyColorMap(InputArray src, OutputArray dst, int colormap)

src: 		源图像(灰度图或彩色图(CV_8UC1 or CV_8UC3))。
dst: 		在源图像上进行色彩映射后的结果图像。
colormap:	提供的色彩图代码值。(参见:ColormapTypes 枚举数据类型)

下图显示了一个关于colormap(色度图)的视觉表示和COLORMAP_*的数值,左边的颜色模式表示较低的灰度值,右边的则表示较高的灰度值。

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在这里插入图片描述

在这里插入图片描述

2. Look Up Table(LUT)查找表

其实这个伪色彩函数就是使用到了Look Up Table(LUT)查找表,是通过函数把图像像素对应的数值替换或者重新赋值到新的图像上,是一种映射的概念。

代码中customColorMap函数就是自己实现了一个二值化的查找表,用来对图片进行二值化操作:

void customColorMap(Mat &image) {
	int lut[256];
	for (int i = 0; i < 256; i++) {
		if (i < 127)
			lut[i] = 0;
		else
			lut[i] = 255;
	}

	int h = image.rows;
	int w = image.cols;
	for (int row = 0; row < h; row++) {
		for (int col = 0; col < w; col++) {
			int pv = image.at<uchar>(row, col);
			image.at<uchar>(row, col) = lut[pv];
		}
	}
	imshow("lut demo", image);
}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV中的LUT函数是用来执行数组的查找表转换的。它的函数声明为cv::LUT(InputArray src, InputArray lut, OutputArray dst)。在C++中,可以使用cv::LUT函数来实现查找表的功能。\[1\] 在OpenCV中,查找表是一个数组,数组的下标对应图像中的灰度值,数组的值对应灰度值对应的映射值。例如,lutData\[20\]=0表示灰度为20的像素对应的值为0。通过设置不同的灰度值对应的映射值,可以实现图像的灰度级调整。\[2\] 在使用LUT函数时,需要将源图像和查找表作为输入参数,函数会根据查找表将源图像中的像素值进行映射,生成一个新的图像作为输出。通过调整查找表中的映射关系,可以实现不同的图像处理效果。\[1\] 总结来说,OpenCV中的LUT函数是用来执行图像的查找表转换的,通过设置不同的查找表可以实现图像的灰度级调整等功能。\[1\]\[2\] #### 引用[.reference_title] - *1* [【opencv】颜色映射表操作-applyColorMap()和LUT()函数使用介绍](https://blog.csdn.net/sinat_41752325/article/details/127834882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Opencv学习-LUT函数](https://blog.csdn.net/anjisi/article/details/53899222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [(6)OpenCV 4 学习之查找表(LUT)](https://blog.csdn.net/zl_95520/article/details/88915683)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值