【OpenCV】基本数据类型及常见图像模式
是什么?能做什么?解决什么问题?为什么用它?
OpenCV:是一个基于开源发行的跨平台计算机视觉库,实现
一、应用场景:
- 目标识别:人脸、车辆、车牌...
- 自动驾驶
- 医学影像分析
- 视频内容理解与分析:文字识别、公众人物识别、物品分类...
二、opencv基本数据类型:
1. 点和向量类型
- 二维点,如:
Point2i
(或Point
):整数坐标点(x
,y
)。Point2f
:浮点数坐标点。Point2d
:双精度坐标点。
- 三维点,如:
Point3f
:三维浮点数点(x
,y
,z
)。
2. 标量类型(多通道值)
-
多通道值,常用于表示颜色或像素值(顺序为BGR)
Scalar(a, b, c)
:对于 BGR 图像,表示蓝色(B=a)、绿色(G=b)、红色(R=c)
Scalar green(0, 255, 0); // 绿色
- 单通道值,使用
uchar
或Scalar(val)
表示
Scalar(val)
:所有通道赋值为val
(如灰度图像)
uchar grayValue = 128; // 中灰度值
Scalar gray(128); // 等效表示
三、图像模式:
图像:一些亮度各异的点
- 位图模式:是1位二进制深度的图像,黑和白两种颜色
- 灰度模式:1个通道
- RGB模式:3个通道
(1)雪花屏:
Mat noise = cv::Mat::zeros(img.size(), CV_8UC1);
randu(noise, cv::Scalar::all(0), cv::Scalar::all(255));
-
第一个参数 (
noise
):-
这是一个输出参数,表示生成的随机数将存储在这个矩阵中。
noise
是一个cv::Mat
类型的变量,它预先定义了大小和类型(在这个例子中是CV_8UC1
,即8位无符号整型),用于存储生成的随机数。
-
-
第二个参数 (
cv::Scalar::all(0)
):-
这是生成随机数的最小值。
cv::Scalar::all
是一个方便的函数,用于创建一个所有元素都相同的cv::Scalar
对象。这里它创建了一个所有元素都是0的cv::Scalar
对象。
-
-
第三个参数 (
cv::Scalar::all(255)
):-
这是生成随机数的最大值。同样使用
cv::Scalar::all
函数,创建了一个所有元素都是255的cv::Scalar
对象。这意味着生成的随机数范围是从0到255。
-
(2)高斯模糊:
Mat gao_img;
GaussianBlur(img, gao_img, cv::Size(17,17), 0, 0);
参数说明
- src:输入图像(源图像)
- dst:输出图像(结果),必须与输入图像有相同的尺寸和类型
- ksize:高斯核大小,例如
Size(5, 5),必须为奇数
- sigmaX:X 方向的高斯核标准差
- sigmaY:Y 方向的高斯核标准差(默认 0,表示与 sigmaX 相同)
(3)中值滤波:
cv::medianBlur(img, imgBack, 53);
参数说明:第三个参数必须为奇数
(4)毛玻璃:
Mat glass_img;
blur(img, glass_img, cv::Size(15, 15));
(5)灰度
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);
第三个参数:
COLOR_BGR2GRAY
:BGR → 灰度图COLOR_BGR2RGB
:BGR → RGBCOLOR_BGR2HSV
:BGR → HSVCOLOR_GRAY2BGR
:灰度图 → BGR
(6)方向模糊
void bilateralFilter(InputArray src, OutputArray dst, int d,
double sigmaColor, double sigmaSpace, int borderType = BORDER_DEFAULT);
Mat direction_img;
cv::bilateralFilter(img, direction_img, 29, 75, 75); // 常用参数组合
参数:
src
:输入图像(8 位或浮点型,单通道或三通道)。dst
:输出图像,与输入图像大小和类型相同。d
:滤波时使用的像素邻域直径。若为负数,则自动从sigmaSpace
计算。sigmaColor
:颜色空间滤波器的标准差,值越大表示越远的颜色会被混合。sigmaSpace
:坐标空间滤波器的标准差,值越大表示越远的像素会相互影响。borderType
:边界处理方式,默认BORDER_DEFAULT
。
相关文章:
【OpenCV】基本数据类型及常见图像模式
是什么?能做什么?解决什么问题?为什么用它? OpenCV:是一个基于开源发行的跨平台计算机视觉库,实现 一、应用场景: 目标识别:人脸、车辆、车牌...自动驾驶医学影像分析视频内容理解与分析&…...

Linux之Nginx安装及配置原理篇(一)
Nginx安装及配置 前情回顾 首先针对Nginx进程模型,我们回顾一下它的原理机制,我们知道它是通过Master通过fork分发任务节点给予work节点,然后work节点触发了event事件,之后通过一个access_muttex互斥锁,来单线程调用我…...

【Linux网络】NAT和代理服务
NAT 之前我们讨论了,IPv4协议中,IP地址数量不充足的问题。 原始报文途径路由器WAN口时,对报文中的源IP进行替换的过程,叫做NAT。 NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能: NAT能…...

中药药效成分群的合成生物学研究进展-文献精读130
Advances in synthetic biology for producing potent pharmaceutical ingredients of traditional Chinese medicine 中药药效成分群的合成生物学研究进展 摘要 中药是中华民族的文化瑰宝,也是我国在新药创制领域的重要驱动力。许多中药材来源于稀缺物种…...

【消息队列】RabbitMQ基本认识
目录 一、基本概念 1. 生产者(Producer) 2. 消费者(Consumer) 3. 队列(Queue) 4. 交换器(Exchange) 5. 绑定(Binding) 6. 路由键(Routing …...
OCCT知识笔记之OCAF框架详解
OCAF框架在OCCT项目中的构建与使用指南 Open CASCADE Application Framework (OCAF)是Open CASCADE Technology (OCCT)中用于管理CAD数据的核心框架,它提供了一种结构化方式来组织和管理复杂的CAD数据,如装配体、形状、属性(颜色、材料)和元数据等。本文…...
蓝桥杯 16. 外卖店优先级
外卖店优先级 原题目链接 题目描述 “饱了么” 外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有一个优先级,初始时(0 时刻)优先级都为 0。 每经过 1 个时间单位: 如果外卖店没有订单,则优先…...

1T 服务器租用价格解析
服务器作为数据存储与处理的核心设备,对于企业和个人开发者而言至关重要。当涉及到租用 1T 服务器时,价格是大家很为关注的要点。然而,1T 服务器租用一个月的费用并非固定不变,而是受到诸多因素的综合影响。 影响 1T 服务器租用…...

【JavaWeb】Maven(下)
1 依赖管理 1.1 依赖配置 1.1.1 基本配置 依赖:指当前项目运行所需要的jar包。 一个项目中可以引入多个依赖: 例如:在当前工程中,我们需要用到logback来记录日志,此时就可以在maven工程的pom.xml文件中,引…...
java.lang.ArithmeticException
ArithmeticException算术异常类在java.lang包下,继承RuntimeException运行期异常,算术异常类在Java1.0就有,当发生异常算术条件时抛出算术异常类,譬如除数为0的情况,除数除不尽的情况。 一 异常出现场景 1.1 除数为零…...

openEuler24.03 LTS下安装MySQL8.0.42
目录 前提步骤 删除原有mysql及maridb数据库 安装MySQL 启动MySQL 启动查看MySQL状态 设置MySQL开机自启动 查看登录密码 登录MySQL 修改密码及支持远程连接 远程连接MySQL 前提步骤 拥有openEuler24.03 LTS环境,可参考:Vmware下安装openEule…...

gflags 安装及使用
目录 引言 安装 如何用 gflags 库写代码 如何用命令行使用 gflags 库 gflags 库的其他命令行参数 引言 gflags 是 Google 开发的一个开源库,用于 C 应用程序中命令行参数的声明、定义 和解析。 gflags 库提供了一种简单的方式来添加、解析和文档化命令行标…...

Linux面试题集合(2)
查看系统磁盘使用,当前目录下所有文件夹的使用情况 df -h du -h 更改目录所有人和所有组,包括里面的文件夹下的文件,递归更改 chown -R newowner:newgroup 目录名 只更改文件所有人或者只更改文件所有组 chown newowner file chgrp newgroup …...

致敬经典 << KR C >> 之打印输入单词水平直方图和以每行一个单词打印输入 (练习1-12和练习1-13)
1. 前言 不知道有多少同学正在自学C/C, 无论你是一个在校学生, 还是已经是上班族. 如果你想从事或即将从事软件开发这个行业, C/C都是一个几乎必须要接触的系统级程序开发语言. 虽然现在有Rust更安全的系统级编程语言作为C/C的替代, 但作为入门, C应该还是要好好学的. C最早由B…...
std::ratio<1,1000> 是什么意思?
author: hjjdebug date: 2025年 05月 14日 星期三 09:45:24 CST description: std::ratio<1,1000> 是什么意思? 文章目录 1. 它是一种数值吗?2. 它是一种类型吗?3. std:ratio 是什么呢?4. 分析一个展开后的模板函数5.小结: …...

基于Llama3的开发应用(二):大语言模型的工业部署
大语言模型的工业部署 0 前言1 ollama部署大模型1.1 ollama简介1.2 ollama的安装1.3 启动ollama服务1.4 下载模型1.5 通过API调用模型 2 vllm部署大模型2.1 vllm简介2.2 vllm的安装2.3 启动vllm模型服务2.4 API调用 3 LMDeploy部署大模型3.1 LMDeploy简介3.2 LMDeploy的安装3.3…...
2025.05.17淘天机考笔试真题第三题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 奇偶平衡树分割问题 问题描述 K小姐是一位园林设计师,她设计了一个由多个花坛组成的树形公园。每个花坛中种植了不同数量的花…...

windows 10 做服务器 其他电脑无法访问,怎么回事?
一般我们会先打开win10自己的防火墙策略,但是容易忽略 电脑之间 路由器上的防火墙,此时也需要查看一下,可以尝试先关闭路由器防火墙,如果可以了,再 设置路由器上的防火墙规则。 将路由器的上网设置 改成 路由模式 &a…...

Linux进程信号处理(26)
文章目录 前言一、信号的处理时机处理情况“合适”的时机 二、用户态与内核态概念重谈进程地址空间信号的处理过程 三、信号的捕捉内核如何实现信号的捕捉?sigaction 四、信号部分小结五、可重入函数六、volatile七、SIGCHLD 信号总结 前言 这篇就是我们关于信号的最…...
【从设置到上传的全过程】本地多个hexo博客,怎么设置ssh才不会互相影响
偶然间,想多建一个博客,但电脑已经有一个博客了,怎么设置ssh才不会互相影响呢? 在 Windows 系统上设置多个 Hexo 博客的 SSH 配置,避免互相影响,通常户就需要为每个博客配置不同的 SSH 密钥,并…...
顶层架构 - 消息集群推送方案
一、推送基础概念简述 在即时通讯(IM)系统中,最基础的一件事就是“如何把消息推送给用户”。为了实现这个过程,我们要先了解两种常见的网络通信方式:HTTP 和 WebSocket。 1. HTTP 是什么? HTTP 就像一次性…...
Python训练打卡Day26
函数专题1:函数定义与参数 知识点回顾: 函数的定义变量作用域:局部变量和全局变量函数的参数类型:位置参数、默认参数、不定参数传递参数的手段:关键词参数传递参数的顺序:同时出现三种参数类型时 到目前为…...
构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
一、建造者模式的本质与核心价值 在面向对象的软件设计中,创建复杂对象一直是一个需要精心处理的问题。当一个对象的构建需要多个步骤,并且这些步骤具有不同的组合方式时,传统的构造函数方式会显得力不从心。建造者模式(Builder …...

报表控件stimulsoft教程:如何在报表和仪表板中创建热图
Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了…...
(8)python开发经验
文章目录 1 下载python2 pip安装依赖无法访问3 系统支持4 下载python文档5 设置虚拟环境6 编译安装python 更多精彩内容👉内容导航 👈👉Qt开发 👈👉python开发 👈 1 下载python 下载地址尽量不要下载最新版…...
0x08.Redis 支持事务吗?如何实现?
回答重点 Redis 支持事务,但它的事务与 MySQL 等关系型数据库的事务有着本质区别。MySQL 中的事务严格遵循 ACID 特性,而 Redis 中的事务主要保证的是命令执行的原子性和隔离性,即所有命令在一个不可分割的操作中顺序执行,不会被其他客户端的命令请求所打断。 最关键的区…...

win32相关(字符编码)
字符编码 ASCII编码 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是最基础的字符编码标准,用于在计算机和其他设备中表示文本 基本概念 7位编码: ASCII使用7位二进制数&#x…...

使用Langfuse和RAGAS,搭建高可靠RAG应用
大家好,在人工智能领域,RAG系统融合了检索方法与生成式AI模型,相比纯大语言模型,提升了准确性、减少幻觉且更具可审计性。不过,在实际应用中,当建好RAG系统投入使用时,如何判断接收信息是否正确…...
VSCode + Cline AI辅助编程完全指南
VSCode Cline AI辅助编程完全指南 在当今AI快速发展的时代,程序员可以通过AI工具极大地提高工作效率。本教程将详细介绍如何使用VSCode结合Cline(Claude AI助手)进行AI辅助编程,帮助你提高开发效率,解决复杂问题。 …...

android studio导入项目
如果 gradle-8.0-bin.zip 没有下载成功 可以点击进入这个网站:https://services.gradle.org/distributions/ 找到和自己本版相同的gradle-8.0-bin.zip文件找到自己版本进行下载; 如果下载依赖失败, 可以手动下载依赖编译过程中的jar https://repo.maven.apache.org/…...