当前位置: 首页 > news >正文

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

相关文章:

OpenCV(九):LUT查找表

LUT&#xff08;Look-Up Table&#xff09;查找表是OpenCV中一种常用的图像处理方法&#xff0c;用于对图像进行像素级别的颜色映射或图像增强操作。LUT查找表可以实现快速、高效的颜色转换和像素操作&#xff0c;尤其在处理大量像素的情况下具有优势。以下是关于OpenCV LUT查找…...

2023年 Java 面试八股文(25w字)

0.Java八股文上&#xff08;25w字&#xff09;2.3w 1.集合容器 2.Java基础链接 目录 一.Java 基础面试题1.Java概述Java语言有哪些特点&#xff1f;Java和C有什么关系&#xff0c;它们有什么区别&#xff1f;JVM、JRE和JDK的关系是什么&#xff1f;**什么是字节码?**采用字…...

STM32f103入门(7)pwm驱动led驱动舵机驱动直流电机

PWM驱动 PWM介绍TIM_OC1Init 配置通道TIM_OCStructInit 输出比较参数默认值输出比较模式 TIM_OCInitstructure输出比较极性 TIM_OCInitstructure设置输出使能以下三个决定了PWM的频率 占空比初始化通道 TIM_OC1Init(TIM2, &TIM_OCInitstructure);GPIO复用 PWM通道 驱动LED复…...

Linux centos7 bash编程——-求质数和

训练项目&#xff1a;使用函数求质数和。 定义一个函数IsPrime()&#xff0c;据此判断一个数是否为质数 由用户输入一个整数&#xff0c;求出比此数大的两个最小质数之和。 一、解决思路: 1.先在键盘上输入一个整数 2.求出比此数大的最小质数 3.再求出比此质数大的另一个…...

给Hexo添加说说功能

首发博客地址 官网地址 效果 &#x1f440; 前言 GitHub 仓库&#xff1a;Artitalk.js &#x1f389; 特性 增删查改全方面支持 支持针对每条说说的评论 支持 Markdown/html 语法 支持图片上传 &#x1f680; 快速使用 下列主题已将本项目整合进去&#xff0c;可以直接使用。 感…...

Tensorflow调用训练好的yolov5模型进行推理

文章目录 1、安装TensorFlow-GPU版本1.2、验证是否安装正常 2、将训练好的pt文件转换成onnx文件2.2、什么是Onnx模型和Tensorflow模型2.1、将onnx文件转换成pb文件 1、安装TensorFlow-GPU版本 1、创建虚拟环境python3.8 conda create -n TF2.4 python3.82、进入虚拟环境 conda…...

【场景方案】我所积累的一些跨页面的数据传递方式,持续更新,欢迎补充~

文章目录 Iframe内嵌相互传递BroadcastChannel同标签页数据传递localStorage中间人传递未完待续... Iframe内嵌相互传递 使用window.postMessage()的这个html5特性去跨域传递数据&#xff0c;不受跨域限制。 父层&#xff1a; sendMes(){ // 向iframe发送let iframdom this…...

ASP.NET Core 的错误页面

异常处理 Developer 环境的异常页面 ASP.NET Core App 会可以在开发阶段用UseDeveloperExceptionPage启用 Developer 异常页面&#xff1a; app.UseDeveloperExceptionPage();当遇到Unhandled 异常信息时&#xff0c;可以输出异常信息页面&#xff1a; 异常信息包括&#xf…...

Android静态ip设置的坑

Android静态ip设置的坑 Android静态ip设置&#xff0c;对于这个功能&#xff0c;如果没有接触过&#xff0c;会给人感觉是个特别简单的功能&#xff0c;直接调用系统的接口即可&#xff0c;其实这个功能还是有许多坑的&#xff0c;因为谷歌在Android SDK中对相关的API进行非系…...

电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。

一、TPS63070RNMR&#xff0c;降压升压 开关稳压器 IC 正 可调式 2.5V 1 输出 3.6A&#xff08;开关&#xff09; 15-PowerVFQFN 1、概述 TPS63070高输入电压降压-升压转换器是一款高效的低静态电流降压-升压转换器。这些器件适用于输入电压高于或低于输出电压的应用。升压模式…...

k8s(kubernetes)介绍篇

一、Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案&#xff0c;是 Google 开源的一个容器集群管理系统&#xff0c;Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台&#xff0c;更是一个开放平台&#xff0c;对…...

gRPC + Spring Boot 编程教程 - piot

在本文中&#xff0c;您将学习如何实现通过 gRPC 通信的 Spring Boot 应用程序。gRPC 是一个现代开源远程过程调用 (RPC) 框架&#xff0c;可以在任何环境中运行。默认情况下&#xff0c;它使用 Google 的 Protocol Buffer 来序列化和反序列化结构化数据。当然&#xff0c;我们…...

新建Spring Boot项目

使用IDEA 来创建: 文件-新建-项目 填写项目元数据 选择依赖项 此处可以先选 web-spring web 关于这些依赖项&#xff0c;更多可参考&#xff1a; IDEA创建Spring boot项目时各依赖的说明&#xff08;Developer Tools篇&#xff09;[1] 项目结构介绍 展开项目&#xff0c;此时…...

Python数据分析的第三方库

ython作为一种简单易学、功能强大的编程语言&#xff0c;逐渐成为数据分析领域的首选工具。在Python数据分析中&#xff0c;有许多优秀的第三方库可以帮助我们进行数据处理、可视化和建模。 常用第三方库&#xff1a; NumPy&#xff1a;提供了高性能的多维数组对象和用于数组…...

EF列表分页查询(单表、多表),排除参数为空的条件

在日常使用EF框架查询数据库时&#xff0c;有时传入的参数为空,那么我们应该把该条件排除&#xff0c;不应列入组装的sql中&#xff0c;本篇文件以分页查询为例介绍EF框架的单表、多表的多条件查询&#xff0c;参数为空时排除条件。 首先我们要有派生自DBContext类的数据上下文…...

VisualStudio配置pybind11-Python调用C++方法

个人测试下来Debug生成的dll改pyd&#xff0c;py中import会报错gilstate->autoInterpreterState 如果遇到同样问题使用Release吧 目录 1.安装pybind11 1.pip&#xff1a; 2.github&#xff1a; 2.配置VS工程 2.在VC目录中的包含目录添加&#xff1a; 3.在VC目录中的库目录…...

ZZULIOJ 1164: 字符串加密,Java

ZZULIOJ 1164: 字符串加密&#xff0c;Java 题目描述 输入一串字符&#xff08;长度不超过100&#xff09;和一个正整数k&#xff0c;将其中的英文字母加密并输出加密后的字符串&#xff0c;非英文字母不变。加密思想&#xff1a;将每个字母c加一个序数k&#xff0c;即用它后…...

联合体(共用体)的简单介绍

目录 概念&#xff1a; 联合的声明&#xff1a; 类比结构体&#xff1a; 联合体的大小&#xff1a; 联合的⼤⼩⾄少是最⼤成员的⼤⼩ 联合体的空间是共用的 联合体内部成员的赋值&#xff1a; 当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候&#xff0c;就要对⻬到最⼤对⻬…...

Ansible学习笔记8

group模块&#xff1a; 创建一个group组&#xff1a; [rootlocalhost ~]# ansible group1 -m group -a "nameaaa gid5000" 192.168.17.105 | CHANGED > {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}…...

五子棋游戏禁手算法的改进

五子棋游戏禁手算法的改进 五子棋最新的禁手规则&#xff1a; 1&#xff0e;黑棋禁手判负、白棋无禁手。黑棋禁手有“三三”&#xff08;包括“四三三”&#xff09;、“四四”&#xff08;包括“四四三”&#xff09;和“长连”。黑棋只能以“四三”取胜。 2&#xff0e;黑方…...

用51单片机+Proteus仿真,从零到一复刻一个数码管电子钟(附完整代码和电路图)

从零构建51单片机数码管电子钟&#xff1a;Proteus仿真与实战全解析 数码管电子钟作为单片机入门经典项目&#xff0c;能系统训练定时器、中断、数码管驱动等核心技能。但很多初学者在独立实现时&#xff0c;常遇到仿真效果不稳定、显示闪烁或计时不准等问题。本文将用保姆级教…...

Kook Zimage 真实幻想 Typora文档集成方案

Kook Zimage 真实幻想 Typora文档集成方案 1. 引言 技术文档写作最头疼的是什么&#xff1f;文字描述得再生动&#xff0c;也不如一张直观的图片来得有说服力。传统的文档创作流程中&#xff0c;我们需要先在专门的AI绘图工具中生成图片&#xff0c;然后下载保存&#xff0c;…...

LiuJuan20260223Zimage开箱体验:基于Z-Image LoRA,这个专精模型到底有多好用?

LiuJuan20260223Zimage开箱体验&#xff1a;基于Z-Image LoRA&#xff0c;这个专精模型到底有多好用&#xff1f; 你有没有遇到过这样的情况&#xff1a;想用AI画一个特定的人物&#xff0c;比如你故事里的主角&#xff0c;或者一个IP形象&#xff0c;但生成的图片要么不像&am…...

Lychee Rerank在遥感影像分析中的应用:多源地理数据关联

Lychee Rerank在遥感影像分析中的应用&#xff1a;多源地理数据关联 1. 引言 每天&#xff0c;卫星和无人机都在产生海量的遥感影像数据。地质勘探团队需要从数万张卫星图片中找出可能的矿藏迹象&#xff0c;环境监测人员要追踪森林覆盖变化&#xff0c;城市规划者则要分析城…...

淘宝虚拟商品选品实操:从儿童学习资料到游戏攻略的蓝海挖掘术

淘宝虚拟商品选品高阶指南&#xff1a;从儿童教育到游戏产业的精细化运营策略 在淘宝虚拟商品领域&#xff0c;真正能够持续盈利的卖家往往不是那些追逐热门品类的跟风者&#xff0c;而是懂得在细分市场中寻找差异化机会的"蓝海猎手"。儿童学习资料和游戏攻略这两个看…...

Vivado 2020.2实战:XDMA IP核配置全解析(含PCIe 2.0速率计算避坑指南)

Vivado 2020.2实战&#xff1a;XDMA IP核配置全解析&#xff08;含PCIe 2.0速率计算避坑指南&#xff09; 在FPGA与主机间的高速数据交互场景中&#xff0c;PCIe协议凭借其高带宽和低延迟特性成为首选方案。Xilinx提供的XDMA IP核作为PCIe与AXI总线的桥梁&#xff0c;其配置过程…...

告别手动重复!用Python+ArcPy实现多要素批量裁剪年度影像的保姆级教程

PythonArcPy自动化遥感影像裁剪&#xff1a;从原理到实战的完整解决方案 遥感影像处理是GIS工程师的日常必修课。每当拿到新一年的土地利用数据或行政区划影像时&#xff0c;最头疼的莫过于要为每个行政单元单独裁剪每年的数据。我曾花费整整一周时间手动处理30个乡镇5年的NDVI…...

深入理解 MySQL 事务:从基础到实战,一篇吃透

在开发和运维 MySQL 数据库的过程中&#xff0c;事务&#xff08;Transaction&#xff09; 是绕不开的核心知识点&#xff0c;它是保证数据库数据安全、一致、可靠的基石。无论是电商下单、银行转账、支付结算&#xff0c;还是日常的业务数据操作&#xff0c;都离不开事务的支撑…...

毕业设计实战:基于Java+MySQL的教务管理系统设计与实现指南

毕业设计实战&#xff1a;基于JavaMySQL的教务管理系统设计与实现指南 在开发“基于JavaMySQL的教务管理系统”毕业设计时&#xff0c;曾因课程报名表未通过学生ID与课程ID双外键关联踩过关键坑——初期仅设计报名编号、报名时间等基础字段&#xff0c;未与学生表、课程表建立关…...

深入解析STM32 map文件:从编译到内存优化的关键步骤

1. 为什么STM32开发者必须掌握map文件分析 第一次接触STM32的map文件时&#xff0c;我和大多数新手一样感到一头雾水。这个由编译器自动生成的文本文件&#xff0c;乍看就像天书般难以理解。直到有次项目遇到内存不足的紧急情况&#xff0c;我才真正体会到map文件的价值——它不…...