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。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
