当前位置: 首页 > 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;黑方…...

Meta 裁员约 8000 人:弥补 AI 巨额投资,削减人力成本

Meta 裁员&#xff1a;弥补 AI 投资缺口据报道&#xff0c;Meta 已通知数千名员工被裁员&#xff0c;此次裁员是为弥补其在人工智能方面的巨额投资。《商业内幕》分享的 Meta 管理层邮件显示&#xff0c;这是公司“持续努力提高运营效率、平衡其他投资的举措之一”。裁员规模与…...

电动工具MCU选型与开发:从FOC算法到高集成度设计的工程实践

1. 项目概述&#xff1a;为什么电动工具需要一颗“聪明”的MCU&#xff1f;大家好&#xff0c;我是覃杰&#xff0c;在瑞萨电子上海分公司负责MCU相关的技术方案支持。今天我们不聊那些高大上的概念&#xff0c;就从一个工程师最熟悉的场景聊起&#xff1a;你手里那把正在“嗡嗡…...

飞凌OKMX6ULL-C开发板深度评测:从硬件解析到系统性能实战

1. 开箱与初识&#xff1a;飞凌OKMX6ULL-C开发平台拿到飞凌OKMX6ULL-C开发板的第一印象&#xff0c;是它比我想象中要“工整”不少。核心板&#xff08;FETMX6ULL-C&#xff09;和底板通过高可靠性的板对板连接器接插&#xff0c;这种设计在工业级产品中很常见&#xff0c;方便…...

浮动油封市场深度研判:预计2032年将攀升至4.57亿美元

浮动油封&#xff0c;也叫机械端面密封或永久密封&#xff0c;是一种特殊类型的机械密封&#xff0c;主要由一对耐磨的金属浮封环和配套的橡胶密封圈组成&#xff0c;它通过橡胶圈的弹力使两个金属环端面紧密贴合、相对滑动&#xff0c;实现对油、水、泥沙等介质的动态密封&…...

长期使用Taotoken Token Plan套餐的成本控制感受分享

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken Token Plan套餐的成本控制感受分享 1. 从按量计费到套餐订阅的转变 在开始使用Taotoken平台时&#xff0c;我们…...

Firefox渗透测试插件工作流:15款高价值安全工具实战指南

1. 这不是普通浏览器插件推荐&#xff0c;而是一套可落地的渗透测试辅助工作流 “火狐插件”四个字在安全从业者耳中&#xff0c;常被默认为“轻量级、临时性、辅助性”的代名词——很多人装完Hackbar就以为自己有了渗透入口&#xff0c;点开FoxyProxy调个代理就当完成了环境隔…...

Git从入门到工作流:GitLab私有仓库最佳实践(SSH免密、.DS_Store全局忽略)

本文将带你从零开始配置GitLab私有仓库&#xff0c;涵盖SSH密钥免密登录、本地仓库初始化与推送、以及macOS下.DS_Store文件的全局忽略与清理。每一步都有命令和解释&#xff0c;适合新手和想规范Git工作流的开发者。 一、注册GitLab账号并创建私有仓库 1. 注册账号 访问 Git…...

如何将微信聊天记录转化为你的数字记忆宝藏?

如何将微信聊天记录转化为你的数字记忆宝藏&#xff1f; 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …...

为什么选择Minimal:GitHub Pages最简洁主题的深度解析与快速入门指南

为什么选择Minimal&#xff1a;GitHub Pages最简洁主题的深度解析与快速入门指南 【免费下载链接】minimal Minimal is a Jekyll theme for GitHub Pages 项目地址: https://gitcode.com/gh_mirrors/mini/minimal Minimal主题是GitHub Pages平台上最受欢迎、最简洁的Jek…...

2026降AIGC技术白皮书:全网工具实测雷达图与智能选型助手

2026年&#xff0c;随着AIGC技术的深度渗透&#xff0c;学术写作正面临前所未有的挑战与机遇。论文中AI痕迹的显性化、查重系统的智能化升级以及学术规范的严格审查&#xff0c;让“去AI化”成为每位研究者必须直面的现实命题。传统的文本润色工具已难以满足日益严苛的降AIGC需…...