Opencv学习-LUT函数

news2024/9/23 7:25:17

这个函数大概意思根据自己设定的查找表,改变原本像素点值

例如:我们想将一张图片灰度为0-100的像素的灰度变成0,101-200的变成100,201-255的变成255。我们就可已建立如下的一张表格        

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

当把此表格应用到图片时,图片0-100灰度的像素灰度就变成0,101-200的变成100,201-255的就变成255 

1. 函数介绍

void cv::LUT(InputArray src, InputArray lut, OutputArray dst )
  • src:输入图像矩阵,数据类型只能是 CV_8U。
  • lut:256 个像素灰度值的查找表,单通道或者与 src 通道数相同。
  • dst:输出图像矩阵,尺寸与 src 相同,数据类型与 lut 相同

2. 示例代码 

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

using namespace std; 
using namespace cv; 

int main() 
{ 
    //LUT 第一层
    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); 
    
    cout << "lutOne :" << lutOne << endl;
    //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 lutTwo(1, 256, CV_8UC1, lutSecond); 
    
    //LUT 第三层
    uchar lutThird[256]; 
    for (int i = 0; i<256; i++) 
    { 
        if (i <= 100) 
            lutThird[i] = 100; 
        if (i > 100 && i <= 200) 
            lutThird[i] = 200; 
        if (i > 200) 
            lutThird[i] = 255; 
    } 
    Mat lutThree(1, 256, CV_8UC1, lutThird); 
    
    //拥有三通道的 LUT 矩阵
    vector<Mat> mergeMats; 
    mergeMats.push_back(lutOne); 
    mergeMats.push_back(lutTwo); 
    mergeMats.push_back(lutThree); 
    Mat LutTree; 
    merge(mergeMats, LutTree); 
    
    //计算图像的查找表
    Mat img = imread("../pic/gril_1.jpg"); 
    if (img.empty()) 
    { 
        cout << "请确认图像文件名称是否正确" << endl; 
        return -1; 
    } 
    
    Mat gray, out0, out1, out2; 
    cvtColor(img, gray, COLOR_BGR2GRAY); 
    LUT(gray, lutOne, out0); 
    LUT(img, lutOne, out1); 
    LUT(img, LutTree, out2); 
    cout << "gray : " << gray << "\n\n\n\n\n\n\n\n\n\n\n\n\n out0 : " << out0 << endl; 
    imshow("gray", gray); 
    imshow("out0", out0); 
    imshow("out1", out1); 
    imshow("out2", out2); 
    waitKey(0); 
    return 0; 
}

结果 :

lutOne的值

灰色图片一开始像素点的值 

参照lutOne出来的照片一开始像素点的值(跟原先一开始的设定的对应上了)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Studying-代码随想录训练营day52| 101.孤岛的总面积、102沉没孤岛、103.水流问题、104.建造最大岛屿

第52天&#xff0c;图论part03&#xff0c;岛屿问题继续&#xff01;&#xff01;&#x1f4aa;(ง •_•)ง&#xff0c;编程语言&#xff1a;C 目录 101.孤岛的总面积 102沉没孤岛 103.水流问题 104.建造最大岛屿 101.孤岛的总面积 文档讲解&#xff1a;手撕孤岛的总…

昇思25天学习打卡营第XX天|SSD目标检测

感觉目标检测还是yolo相对最火&#xff1f;ssd有点老了可以更新下 SSD算法数学描述 SSD算法使用卷积神经网络&#xff08;CNN&#xff09;进行特征提取&#xff0c;并通过多尺度的特征图进行目标检测。设 ( C ) 为CNN输出的特征层数量&#xff0c;( F_i ) 为第 ( i ) 层特征…

【Postman的接口测试工具介绍】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 👉Postman接口.👋 👉Postman是一款常用的API开发测试工具,它提…

Harmony学习(四)(应用程序框架基础)

1.应该程序框架基础 多Module设计机制 模块化开发&#xff1a;一个应用多个功能&#xff0c;每个功能可作为一个模块&#xff0c;Module中可以包含源代码、资源文件、第三方库、配置文件等&#xff0c;每一个Module可以独立编译&#xff0c;实现特定的功能支持多设备&#xf…

jdk的版本匹配 Usage of ApI documented as @since 11+

IDEA 解决 Usage of API documented as since XX 的方法 如下所示&#xff0c;代码已经报错提示。 这个问题的原因是IDEA 设置的jdk Language level 语法级别太低&#xff0c;不适配代码导致的&#xff0c;只要在项目结构中将语法级别调相应的级别就可以了。具体解决思路见下图…

vue-创建自己的CLI脚手架

1.自定义命令和入口配置 首先创建一个文件夹&#xff0c;然后npm init -y生成package.json文件 添加bin命令配置入口文件 新建lib/index.js文件 然后在控制台npm link 建立软连接 、然后执行felix-cli 就可以输出代码 2.查看当前版本号命令 安装 commander npm i commander…

系统架构设计师 - 企业信息化战略与实施

企业信息化战略与实施 企业信息化战略与实施信息与信息化的概念信息的定义信息的特点信息化的概念信息化对组织的意义 信息系统生命周期 ★立项阶段开发阶段运维阶段消亡阶段 信息系统战略规划 ★ ★ ★政府信息化与电子政务 ★企业信息化与电子商务 ★ ★ ★企业资源计划企业资…

2024年让短片制作不再难,4款剪辑软件助你一臂之力!

在这个短视频流行的时代&#xff0c;每一个创意都值得被展现&#xff0c;每一份热情都值得被激发。你是不是也曾经想过&#xff0c;用镜头来讲述你的故事&#xff0c;用剪辑来展示你的才华&#xff1f;今天&#xff0c;我们一起来探索2024年制作高质量短片的秘密武器——4款强大…

gitignore文件设置,git提交时忽略部分文件

在git提交时&#xff0c;出现了非常多无用的文件&#xff0c;包括.idea、.iml文件等等&#xff0c;使得commit变得麻烦&#xff0c;要自己在勾选框中点击半天。 右键单击项目名&#xff0c;选择New 选择File,命名为.gitignore&#xff08;注意&#xff1a;开头符号是英文.&…

文件描述符(fileno)及文件系统

fileno: #include <stdio.h> main() {FILE *fp;int fd;fp fopen("/etc/passwd", "r");fd fileno(fp);printf("fd %d\n", fd);fclose(fp); } 一&#xff0e;fileno()函数-CSDN博客https://blog.csdn.net/TuxedoLinux/article/detai…

利用开源可视化报表工具进入流程化办公!

很多客户朋友都希望能实现流程化办公&#xff0c;因为只有这样才能帮助企业顺利降本、增效、提质&#xff0c;利用好企业内部数据资源&#xff0c;打破信息孤岛壁垒&#xff0c;实现高效发展。低代码技术平台、开源可视化报表工具优势功能特点多&#xff0c;是提质高效的办公利…

日本软文发稿:日本主流发稿媒体有哪些?

日本软文发稿&#xff1a;日本主流发稿媒体有哪些 在日本发布软文时&#xff0c;选择合适的主流媒体进行推广是非常关键的。以下是一些在日本广受欢迎、影响力较大的媒体推荐&#xff08;排列不区分媒体排名顺序&#xff09;&#xff1a; 1. 朝日新闻 (Asahi Shimbun) 朝日新…

ChildLife童年时光创始人Murray Clarke亮相CBME并解析技术创新

2024年7月17日至19日&#xff0c;全球知名的孕婴童产品展览会——CBME国际孕婴童展在上海盛大开幕。作为这一领域最具影响力的展会之一&#xff0c;CBME吸引了众多国际知名品牌前来参展。美国知名儿童营养品牌ChildLife童年时光也携其重磅新品“液体钙小绿钙”亮相本次展会。Ch…

【测试架构师修炼之道】读书笔记

六大质量属性 效率性能 测试类型&#xff1a;六种-XX属性转化为XX测试 产品测试车轮图 一个软件测试者要从哪些方面(测试类型)用哪些方法(测试方法)去测试产品(质量属性)的关系图 全面性与深度 稳定性测试&#xff1a;多并复异 性能测试&#xff1a; 系统能够正确处理新业…

格式化的硬盘怎么恢复数据?格式化数据恢复的7个小妙招,助你快速恢复文件

硬盘格式化不仅可以提升计算机性能、释放空间&#xff0c;还可修复部分错误。通常&#xff0c;在进行硬盘格式化前&#xff0c;系统会发出数据将被删除的警告。然而&#xff0c;有时即使有警告&#xff0c;也可能不慎格式化硬盘导致重要文件丢失。在这种情况下&#xff0c;您需…

微软GraphRAG,开启智能检索新篇章

©作者|YXFFF 来源|神州问学 1. 引言 检索增强生成&#xff08;RAG&#xff09;是一种根据用户的查询语句搜索信息&#xff0c;并以搜索结果为 AI 参考从而生成回答。这项技术是多数基于 LLM 工具的重要组成部分&#xff0c;而多数的 RAG 都采用向量相似性作为搜索的技术。…

【过题记录】 8.2 hddx

飞行棋 关于这一题 我在考场上手莫了n2和n3的情况 发现一点规律&#xff0c;大力猜想蒙了一个结论 结果蒙对了… 关于正确做法&#xff0c;发现零号点和其他几个点是不一样的。 因为对于0而言&#xff0c;他没有赠送的情况(只要摇到n就直接胜利) 因此0和其他点要分开讨论 对于…

1.大语言模型如何从专才走向通才2.GPT4的核心是可以写并执行代码,还可以接受文件读取并应用于代码中(比如中文字资料包),完全是个工程师了

1.大语言模型如何从专才&#xff08;机器翻译&#xff09;走向通才2.GPT4的核心是可以写并执行代码,还可以接受文件读取并应用于代码中&#xff08;比如中文字资料包&#xff09;&#xff0c;完全是个工程师了 总纲&#xff1a;大语言模型就是做文字接龙游戏! 大模型为了得到…

Linux 应急响应靶场练习 1

靶场在知攻善防实验室公众号中可以获取 前景需要&#xff1a;小王急匆匆地找到小张&#xff0c;小王说"李哥&#xff0c;我dev服务器被黑了",快救救我&#xff01;&#xff01; 挑战内容&#xff1a; &#xff08;1&#xff09;黑客的IP地址 &#xff08;2&#xff0…

【香橙派系列教程】(六)嵌入式SQLite数据库

【六】嵌入式SQLite数据库 文章目录 【六】嵌入式SQLite数据库1.简介2.SQLite数据库安装3.SQLite命令用法1.创建数据库2.创建和查看表格3.插入查看数据&#xff08;记录&#xff09;4.删除更改数据&#xff08;记录&#xff09; 4.SQLite编程操作1.打开/创建数据库的C接口2.创建…