Opencv-图像插值与LUT查找表
图像像素的比较
白色是255,黑色是0
min(InputArray src1,InputArray src2,OutputArray dst)
max(InputArray src1,InputArray src2,OutpurArray dst
- src1:第一个图像矩阵,通道数任意
- src2:第二个图像矩阵,尺寸和通道数以及数据类型都需要与src1一致
- dst:保留对应位置较大(较小)灰度值后的图像矩阵,尺寸、通道数和数据类型与src1一致
LUT查找表
LUT查找表实际上就是一种映射规则

LUT(InputArray src,InputArray lut,OutputArray dst)
src:输入图像矩阵,其数据类型只能是CV_8U
lut:256个像素灰度值的查找表,单通道或者与src通道数相同
dst:输出图像矩阵,其尺寸与src相同,数据类型与lut相同
//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);//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, lutFirst);//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("2.jpg");Mat gray, out0, out1, out2;cvtColor(img, gray, COLOR_BGR2GRAY);LUT(gray, lutOne, out0);LUT(img, lutOne, out1);LUT(img, LutTree, out2);imshow("out0", out0);imshow("out1", out1);imshow("out2", out2);waitKey(0);
图像尺寸改变
图像插值原理
在日常对图像进行操作的过程中会涉及到图像的放大与缩小,这一系列的操作都是通过插值法来实现的;opencv中resize()函数的实现原理0就是通过插值算法,如果不对应用某种算法进行设置,则默认采用双线性插值算法。
常用插值算法
最近邻法(Nearest Interpolation):计算速度最快,但是效果最差。
双线性插值(Bilinear Interpolation):双线性插值是用原图像中4(22)个点计算新图像中1个点,效果略逊于双三次插值,速度比双三次插值快,属于一种平衡美,在很多框架中属于默认算法。
双三次插值(Bicubic interpolation):双三次插值是用原图像中16(44)个点计算新图像中1个点,效果比较好,但是计算代价过大。
jj’

图像缩放
resize(InputArray src,OutputArray dst,Size dsize,double fx=0,double fy=0,int interpolation = INTER_LINEAR)
dsize:输出图像的尺寸
fx:水平轴的比例因子:如果将水平轴变为原来的两倍,则赋值为2
fy:垂直轴的比例因子
interpolation:插值方法的标志
图像翻转
filp(InputArray src,OutputArray dst,int flipCode)
flipCode:翻转方式标志,数值大于0表示绕y轴进行翻转;数值等于0,表示绕x轴进行翻转,数值小于0表示绕两个轴旋转
图像拼接
//横向拼接要求高度一致
hconcat(InputArray src1,InputArray src2,OutputArray dst)
//垂直拼接要求宽度一致
vconcat(InputArray src1,InputArray src2,OutputArray dst)
Mat img = imread("2.jpg");Mat out,out1,out2,out3;// 缩小resize(img, out, Size(500,500),0, 0, INTER_AREA);// 最近邻插值resize(img, out1, Size(200, 200), 0, 0, INTER_NEAREST);//双线性插值resize(img, out2, Size(200, 200), 0, 0, INTER_LINEAR);//双三次插值resize(img, out3, Size(200, 200), 0, 0, INTER_CUBIC);Mat img_x, img_y, img_xy;flip(img, img_x, 0); //沿x轴对称翻转flip(img, img_y, 1); //沿y轴对称翻转flip(img, img_xy, -1);//沿x轴对称,再y轴对称
相关文章:
Opencv-图像插值与LUT查找表
图像像素的比较 白色是255,黑色是0 min(InputArray src1,InputArray src2,OutputArray dst) max(InputArray src1,InputArray src2,OutpurArray dstsrc1:第一个图像矩阵,通道数任意src2:第二个图像矩阵,尺寸和通道数以及数据类型…...
我为什么写博客?写博客给我带来了什么?
1、写博客的契机 (1)刚开始接触CSDN,是大三的时候开始学习嵌入式开发,经常需要到网上百度查资料,由此经常游览CSDN上的博客; (2)在嵌入式的过程中,需要总结学习过的知识。…...
jdk11的HttpClient
我们都知道在jdk11之前都在用okhttp或者org.apache.httpcomponents 其实早在jdk9的时候这个方案就在孵化中 上面的截图来自openjdk的官网,注:openjdk是个开源项目,不存在侵权现象 这是openjdk的官网:JEP 110: HTTP/2 Client (In…...
Redis的优势
高性能 Redis是一种基于内存的数据存储系统,读写性能非常高,因此适用于对性能要求较高的应用场景。 数据结构丰富 Redis支持多种数据结构,如字符串、列表、集合、散列、有序集合等,可以满足不同的业务需求。还有一些特殊数据结…...
C++ string 类的其他操作
4.3.2 string 类的其他操作 在C新增string类之前,程序员也需要完成诸如给字符串赋值等工作。对于C语言式的字符串,程 序员使用C语言库中的函数来完成这些任务。头文件cstring(以前为string.h)提供了这些函数。例如,可 以使用函数 strcpy()将字符串复制到字符数组中,使用函数…...
structs2 重构成SpringBoot架构
# 目录 structs2 重构成SpringBoot架构 1.1 structs2架构: 1.2 springboot 架构 1.3 演化要点: 1.基于前端的展示层不需要修改 2.HttpServlet 将会有SpringBoot annotation 来处理 3.构建前置的Structs url 转发器,适配 4.ActionSupport将由…...
【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。
操作环境: MATLAB 2022a 1、算法描述 1.粒子群算法(Particle Swarm Optimization,简称PSO)是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述: 基本思想: 鸟群在寻找食物时,每只鸟都…...
【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox
文章目录 1.WinForm文件结构2. 窗体的常用属性、方法与事件2.1 常用属性(可直接在属性中设置)2.2 常用方法2.3 常用事件 3.Label、TextBox及Button控件4.RadioButton和CheckBox5.ListBox(列表框) 1.WinForm文件结构 .sln文件 &am…...
【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar
SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建Tab…...
PureFlash云原生存储部署方法
PureFlash云原生存储 PureFlash是一个开源存储系统,它能为云计算和传统应用提供块存储服务。PureFlash最显著的优势是其高性能,每节点能提供超过100万IOPS随机写IO。 PureFlash可以以云原生的方式部署,并为云原生应用提供持久存储。 PureFl…...
SqueezeNet 一维,二维网络复现 pytorch 小白易懂版
SqueezeNet 时隔一年我又开始复现神经网络的经典模型,这次主要复的是轻量级网络全家桶,轻量级神经网络旨在使用更小的参数量,无限的接近大模型的准确率,降低处理时间和运算量,这次要复现的是轻量级网络的非常经典的一…...
Java 数据结构
枚举 Java枚举是一种特殊的类,它用于定义有限个特定的值,例如一周的星期或者性别。枚举在Java中被视为数据类型,你可以使用它们来创建枚举类型的变量,然后使用那些枚举值等。 在Java中,声明枚举类型需要使用enum关键字…...
python sqlalchemy(ORM)- 02 表关系
文章目录 表关系ORM表示 1v1ORM表示 1vm 表关系 1:1,表A 中的一条记录,仅对应表B中的一条记录;表B的一条记录,仅对应表A的一条记录。1:m,表A中的一条记录,对应表B中的多条记录,表B中的一条记录…...
Http长连接同一个socket多个请求和响应如何保证一一对应?
HTTP/2引入二进制数据帧和流的概念,其中帧对数据进行顺序标识,如下图所示,这样浏览器收到数据之后,就可以按照序列对数据进行合并,而不会出现合并后数据错乱的情况。同样是因为有了序列,服务器就可以并行的…...
Standford Compiler Course Assignment 2
第二部分的作业是语法分析,通过编写cool.y(这个assignment的任务),利用bison将其自动生成语法分析LALR(1)的代码。 语法分析,就是将词法分析阶段已经识别好的token,按照语法的规则,构建抽象语法树的过程。 比如以下的…...
基于Java的校园论坛管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...
谈谈你对Spring的理解
谈谈你对Spring的理解 一,什么是Spring 1.介绍 Spring是一个用于开发Java应用程序的工具集合,它提供了许多方便的组件和工具,可以帮助开发者更轻松地构建企业级应用程序。 Spring Framework是Spring的核心部分,它可以帮助开发者…...
系统架构师考试易混淆知识点总结
易混淆点1:系统工程生命周期与信息系统的生命周期 1、系统工程生命周期阶段 探索性研究→概念阶段→开发阶段→生产阶段→使用阶段→保障阶段→退役阶段 2、信息系统的生命周期 产生阶段→开发阶段(单个系统开发:总体规划、系统分析、系统设计、系统实施、系统验收…...
反射的作用( 越过泛型检查 和 可以使用反射保存所有对象的具体信息 )
1、绕过 编译阶段 为集合添加数据 反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以 为集合存入其他任意类型的元素的 。泛型只是在编译阶段可以约束集合只能操作某种数据类型,在 编译成Class文件进入 运行阶段 的时候&a…...
前端开发实践:vue中用qrcode库将超链接生成二维码图片
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…...
盘式电机Maxwell电磁仿真模型(双定单转24槽20极)代码功能说明
盘式电机 maxwell 电磁仿真模型 双转单定结构,halbach 结构,双定单转 24 槽 20 极,18槽 1 2 极,18s16p(可做其他槽极配合) 参数化模型,内外径,叠厚等所有参数均可调整 默认模型仅作学…...
3大核心功能提升50%英雄联盟操作效率的开源工具
3大核心功能提升50%英雄联盟操作效率的开源工具 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾在排位赛中因手速慢错过最佳英雄选择时…...
Windows Defender Remover:系统安全组件深度管理完全指南
Windows Defender Remover:系统安全组件深度管理完全指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/…...
本地多人游戏分屏工具:突破单机限制的创新解决方案
本地多人游戏分屏工具:突破单机限制的创新解决方案 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾遇到这样的困境:…...
LangGraph条件边实战:手把手教你打造一个能‘看图说话’的客服工单分流Agent
LangGraph条件边实战:打造智能客服工单分流系统 想象一下,当用户向客服系统发送"我要退款"或"查询物流"这样的请求时,系统能像经验丰富的客服主管一样,瞬间理解意图并将工单精准路由到对应处理部门。这不再是…...
SteamAutoCrack:三步告别Steam游戏限制,实现真正的离线自由
SteamAutoCrack:三步告别Steam游戏限制,实现真正的离线自由 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 你是否曾经遇到过这样的困扰:明明购买了…...
OpenClaw多任务队列管理:千问3.5-27B并行处理技巧
OpenClaw多任务队列管理:千问3.5-27B并行处理技巧 1. 为什么需要任务队列管理 上个月我尝试用OpenClaw自动处理200多份PDF文档的摘要生成任务,结果遭遇了典型的"暴力调度"问题——所有任务同时发起请求,导致千问3.5-27B模型实例直…...
车载蓝牙只能打电话不能放音乐?教你排查A2DP协议支持问题(含车型适配清单)
车载蓝牙音乐播放失效?全面解析A2DP协议兼容性与实战修复指南 开车时想用蓝牙播放手机里的音乐,却发现只能接打电话?这种"半残"状态困扰着不少车主。问题的核心往往在于A2DP(高级音频分发协议)的支持与配置。…...
用Notepad++打开PLY文件:手把手教你读懂三维点云与网格数据的‘源代码’
用Notepad打开PLY文件:手把手教你读懂三维点云与网格数据的‘源代码’ 当你第一次拿到一个PLY文件时,可能会感到困惑——这个看似普通的文本文件,如何承载复杂的三维世界?就像程序员通过阅读源代码理解软件逻辑一样,我…...
突破魔兽争霸3帧率限制:WarcraftHelper实现180fps流畅游戏体验全攻略
突破魔兽争霸3帧率限制:WarcraftHelper实现180fps流畅游戏体验全攻略 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 在现代高性能电脑上运…...
