OpenCV(九):LUT查找表

简介: OpenCV(九):LUT查找表

LUT(Look-Up Table)查找表是OpenCV中一种常用的图像处理方法,用于对图像进行像素级别的颜色映射或图像增强操作。LUT查找表可以实现快速、高效的颜色转换和像素操作,尤其在处理大量像素的情况下具有优势。以下是关于OpenCV LUT查找表的一些重要知识点:

1.LUT数据结构:在OpenCV中,LUT查找表通常是一个一维数组或矩阵,其大小通常为256个元素(对于8位图像)。每个元素表示一种颜色或灰度级的映射。可以通过修改查找表中的元素来实现颜色的映射或像素操作。

2.查找表映射:将LUT查找表应用于图像时,可以使用OpenCV的cv::LUT函数进行映射。该函数的原型如下:

void cv::LUT(InputArray src, InputArray lut, OutputArray dst);

  • src:输入图像,可以是单通道或多通道的。
  • lut:查找表,通常是创建的LUT数据结构。
  • dst:输出图像,与输入图像具有相同的大小和类型。

3.创建四通道的LUT查找表矩阵,使用LUT函数进行映射

//将bitmap转化为Mat类
    Mat image(info.height, info.width, CV_8UC4, pixels);
    uchar lutFirst[256];
    for(int i=0;i<256;i++){
        if(i<=100)
             lutFirst[i]=0;
        if(i>100&&i<=200)
            lutFirst[i]=100;
        if(i>200)
            lutFirst[i]=255;
    }
    Mat lutOne(1,256,CV_8UC1,lutFirst);
    //LUT查找表第二层
    uchar lutSecond[256];
    for(int i=0;i<256;i++) {
        if (i <= 100)
            lutSecond[i] = 0;
        if (i > 100 && i <= 150)
            lutSecond[i] = 100;
        if (i > 150 && i <= 200)
            lutSecond[i] = 150;
        if (i > 200)
            lutSecond[i] = 255;
    }
    Mat lutTow(1,256,CV_8UC1,lutSecond);
    //LUT查找表第三层
    uchar lutThird[256];
    for(int i=0;i<256;i++) {
        if (i <= 100)
            lutThird[i] = 200;
        if (i > 100 && i <= 200)
            lutThird[i] = 200;
        if (i > 200)
            lutThird[i] = 255;
    }
    Mat lutThree(1,256,CV_8UC1,lutThird);
    //LUT查找表第四层
    uchar lutFour[256];
    for(int i=0;i<256;i++) {
        if (i <= 100)
            lutFour[i] = 200;
        if (i > 100 && i <= 200)
            lutFour[i] = 200;
        if (i > 200)
            lutFour[i] = 255;
    }
    Mat lutfour(1,256,CV_8UC1,lutFour);
    //拥有四通道的LUT查找表矩阵
    vector<Mat> mergeMats;
    mergeMats.push_back(lutOne);
    mergeMats.push_back(lutTow);
    mergeMats.push_back(lutThree);
    mergeMats.push_back(lutfour);
    Mat LutTree;
    merge(mergeMats,LutTree);
    Mat gray,out0,out1,out2;
    cvtColor(image,gray,COLOR_BGR2GRAY);
    LUT(gray,lutOne,out0);
    LUT(image,lutOne,out1);
    LUT(image,LutTree,out2);
    imwrite("/sdcard/DCIM/out0.jpg",out0);
    imwrite("/sdcard/DCIM/out1.jpg",out1);
    imwrite("/sdcard/DCIM/out2.jpg",out2);

   out0                                               out1                                                   out2

目录
相关文章
|
2月前
|
计算机视觉 Python
Opencv学习笔记(一):如何将得到的图片保存在指定目录以及如何将文件夹里所有图片以数组形式输出
这篇博客介绍了如何使用OpenCV库在Python中将图片保存到指定目录,以及如何将文件夹中的所有图片读取并以数组形式输出。
170 0
Opencv学习笔记(一):如何将得到的图片保存在指定目录以及如何将文件夹里所有图片以数组形式输出
|
7月前
|
Python
Python代码扫描目录下的文件并获取路径
【5月更文挑战第12天】Python代码扫描目录下的文件并获取路径
141 1
|
2月前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
30 1
|
7月前
|
存储 JSON 数据库
Python中列表数据的保存与读取:以txt文件为例
Python中列表数据的保存与读取:以txt文件为例
224 2
|
2月前
|
IDE 开发工具 iOS开发
Python编程案例:查找指定文件大小的文件并输出路径
Python编程案例:查找指定文件大小的文件并输出路径
26 3
|
2月前
|
Python
Python实用记录(十二):文件夹下所有文件重命名以及根据图片路径保存到新路径下保存
这篇文章介绍了如何使用Python脚本对TTK100_VOC数据集中的JPEGImages文件夹下的图片文件进行批量重命名,并将它们保存到指定的新路径。
35 0
|
4月前
|
算法 数据挖掘 Python
|
7月前
|
Python
Python 递归检测文件夹下的文件
Python 递归检测文件夹下的文件
47 0
|
5月前
|
数据库
提取本地路径Jpg或者mp4文件的名字,导入mp4的名字,并导入数据库的源码
提取本地路径Jpg或者mp4文件的名字,导入mp4的名字,并导入数据库的源码
|
7月前
|
Python
在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存
【5月更文挑战第12天】在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存在,该函数对路径进行检查,存在则返回True,不存在则返回False。示例代码展示了如何检查'example.txt'文件是否存在并相应打印消息。此外,`os.path.isfile()`用于确认路径是否为文件,仅当是文件时返回True,否则返回False,同样配以示例说明其用法。
261 2