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(Look-Up Table)查找表是OpenCV中一种常用的图像处理方法,用于对图像进行像素级别的颜色映射或图像增强操作。LUT查找表可以实现快速、高效的颜色转换和像素操作,尤其在处理大量像素的情况下具有优势。以下是关于OpenCV LUT查找…...
2023年 Java 面试八股文(25w字)
0.Java八股文上(25w字)2.3w 1.集合容器 2.Java基础链接 目录 一.Java 基础面试题1.Java概述Java语言有哪些特点?Java和C有什么关系,它们有什么区别?JVM、JRE和JDK的关系是什么?**什么是字节码?**采用字…...
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编程——-求质数和
训练项目:使用函数求质数和。 定义一个函数IsPrime(),据此判断一个数是否为质数 由用户输入一个整数,求出比此数大的两个最小质数之和。 一、解决思路: 1.先在键盘上输入一个整数 2.求出比此数大的最小质数 3.再求出比此质数大的另一个…...
给Hexo添加说说功能
首发博客地址 官网地址 效果 👀 前言 GitHub 仓库:Artitalk.js 🎉 特性 增删查改全方面支持 支持针对每条说说的评论 支持 Markdown/html 语法 支持图片上传 🚀 快速使用 下列主题已将本项目整合进去,可以直接使用。 感…...
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特性去跨域传递数据,不受跨域限制。 父层: sendMes(){ // 向iframe发送let iframdom this…...
ASP.NET Core 的错误页面
异常处理 Developer 环境的异常页面 ASP.NET Core App 会可以在开发阶段用UseDeveloperExceptionPage启用 Developer 异常页面: app.UseDeveloperExceptionPage();当遇到Unhandled 异常信息时,可以输出异常信息页面: 异常信息包括…...
Android静态ip设置的坑
Android静态ip设置的坑 Android静态ip设置,对于这个功能,如果没有接触过,会给人感觉是个特别简单的功能,直接调用系统的接口即可,其实这个功能还是有许多坑的,因为谷歌在Android SDK中对相关的API进行非系…...
电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。
一、TPS63070RNMR,降压升压 开关稳压器 IC 正 可调式 2.5V 1 输出 3.6A(开关) 15-PowerVFQFN 1、概述 TPS63070高输入电压降压-升压转换器是一款高效的低静态电流降压-升压转换器。这些器件适用于输入电压高于或低于输出电压的应用。升压模式…...
k8s(kubernetes)介绍篇
一、Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台,对…...
gRPC + Spring Boot 编程教程 - piot
在本文中,您将学习如何实现通过 gRPC 通信的 Spring Boot 应用程序。gRPC 是一个现代开源远程过程调用 (RPC) 框架,可以在任何环境中运行。默认情况下,它使用 Google 的 Protocol Buffer 来序列化和反序列化结构化数据。当然,我们…...
新建Spring Boot项目
使用IDEA 来创建: 文件-新建-项目 填写项目元数据 选择依赖项 此处可以先选 web-spring web 关于这些依赖项,更多可参考: IDEA创建Spring boot项目时各依赖的说明(Developer Tools篇)[1] 项目结构介绍 展开项目,此时…...
Python数据分析的第三方库
ython作为一种简单易学、功能强大的编程语言,逐渐成为数据分析领域的首选工具。在Python数据分析中,有许多优秀的第三方库可以帮助我们进行数据处理、可视化和建模。 常用第三方库: NumPy:提供了高性能的多维数组对象和用于数组…...
EF列表分页查询(单表、多表),排除参数为空的条件
在日常使用EF框架查询数据库时,有时传入的参数为空,那么我们应该把该条件排除,不应列入组装的sql中,本篇文件以分页查询为例介绍EF框架的单表、多表的多条件查询,参数为空时排除条件。 首先我们要有派生自DBContext类的数据上下文…...
VisualStudio配置pybind11-Python调用C++方法
个人测试下来Debug生成的dll改pyd,py中import会报错gilstate->autoInterpreterState 如果遇到同样问题使用Release吧 目录 1.安装pybind11 1.pip: 2.github: 2.配置VS工程 2.在VC目录中的包含目录添加: 3.在VC目录中的库目录…...
ZZULIOJ 1164: 字符串加密,Java
ZZULIOJ 1164: 字符串加密,Java 题目描述 输入一串字符(长度不超过100)和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。加密思想:将每个字母c加一个序数k,即用它后…...
联合体(共用体)的简单介绍
目录 概念: 联合的声明: 类比结构体: 联合体的大小: 联合的⼤⼩⾄少是最⼤成员的⼤⼩ 联合体的空间是共用的 联合体内部成员的赋值: 当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候,就要对⻬到最⼤对⻬…...
Ansible学习笔记8
group模块: 创建一个group组: [rootlocalhost ~]# ansible group1 -m group -a "nameaaa gid5000" 192.168.17.105 | CHANGED > {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}…...
五子棋游戏禁手算法的改进
五子棋游戏禁手算法的改进 五子棋最新的禁手规则: 1.黑棋禁手判负、白棋无禁手。黑棋禁手有“三三”(包括“四三三”)、“四四”(包括“四四三”)和“长连”。黑棋只能以“四三”取胜。 2.黑方…...
ISTA 3B-2013 全解析|零担货物 (LTL) 综合模拟运输测试标准(CSDN 完整版)前言
前言 ISTA 3B-2013 是 ISTA 3 系列高级综合模拟测试,专门针对零担货物运输(LTL) 的包装件。 零担运输的特点是多货混装、多次中转、人工 / 叉车交叉搬运、环境复杂,因此 3B 是工业、设备、家电、汽配、大型包装最贴近真实物流的测…...
【linux学习】linux工具篇(下)
Linux调试器-gdb使用,Linux项目自动化构建工具-make/Makefile我是程序员小青蛙,下面分享linux的工具利用前言程序的发布方式有两种,debug模式和release模式 Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试…...
3个步骤让你的Switch Joy-Con在Windows上焕发新生:JoyCon-Driver完全指南
3个步骤让你的Switch Joy-Con在Windows上焕发新生:JoyCon-Driver完全指南 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 你是否曾想过让闲…...
Donut端到端票据识别:小票图像直出结构化JSON
1. 项目概述:一张小票,如何让AI“看懂”并结构化输出?你有没有试过把超市小票拍张照,想让手机自动提取“总金额:89.50”“商品:牛奶2”“时间:2024-03-12 18:23”这些信息?不是OCR识…...
Tokenizer与Embedding
Transformers 系列文章目录 第一章 Transformers 简介 第二章 Transformers 模型推理; 第三章 Tokenizer 与 Embedding 文章目录Transformers 系列文章目录前言Tokenizer与Embedding一、Tokenizer(分词器)和Embedding(词嵌入&a…...
函数递归调用原理
1. 什么是递归 2. 递归的举例 3. 递归与迭代1. 什么是递归递归就是一种解决方法,在C语言中,递归就是函数调用自己。下面是一个简单的递归C语言程序:#include <stdio .h>int main(){printf("hello world\n");main();//main函数…...
深信服发布AI算力网关,聚焦AI算力治理,让AI算力效能更高
中国AI产业正在全面爆发,各行业的Agent应用发展更是迅猛。对企业来说,管好这些Agent并不容易,首先难算清的就是“成本账”——算力使用情况看不清、Token资源浪费管不住、AI投入省不下。为了帮助各行业用户实现AI模型和算力的高效治理&#x…...
RAG+Agent+记忆图谱三重架构解析,2026年仅剩这4个工具通过企业级安全审计认证
更多请点击: https://codechina.net 第一章:RAGAgent记忆图谱三重架构解析,2026年仅剩这4个工具通过企业级安全审计认证 架构协同的本质逻辑 RAG 提供实时、可溯源的外部知识注入能力;Agent 负责任务分解、工具调用与多步推理闭…...
COCO数据集到底怎么用?从PyTorch和TensorFlow加载到可视化标注的完整代码示例
COCO数据集实战指南:从数据加载到可视化标注的全流程解析 计算机视觉领域的研究者和开发者们,当你开始构建目标检测或图像分割模型时,COCO数据集无疑是你最重要的训练资源之一。这个由微软发起的大规模数据集已经成为行业标准,但许…...
新手教程使用curl命令通过Taotoken测试大模型API连通性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 新手教程:使用curl命令通过Taotoken测试大模型API连通性 当你刚刚在Taotoken平台创建了API Key,最直接、最…...
