02- OpenCV:加载、修改、保存图像
目录
1、加载图像(cv::imread)
2、显示图像 (cv::namedWindos 与cv::imshow)
3、修改图像 (cv::cvtColor)
4、保存图像(cv::imwrite)
5、代码演示
1、加载图像(cv::imread)
cv::imread 是 OpenCV 库中用于读取图像文件的函数,加载图像文件成为一个Mat对象。
它的原型如下:
using namespace cv;//写上这个命名空间,下面可以省cv::Mat imread(const std::string& filename, int flags = IMREAD_COLOR);
参数说明:
filename:要读取的图像文件的路径和名称。flags:可选参数,指定图像读取的方式,默认为cv::IMREAD_COLOR。可以使用以下标志之一:
cv::IMREAD_COLOR:(>0) 以彩色图像RGB格式读取图像(默认值)。cv::IMREAD_GRAYSCALE:( 0) 以灰度图像格式读取图像。cv::IMREAD_UNCHANGED:(<0) 以原始图像格式读取图像,包括 alpha 通道。返回值:
- 如果成功读取图像文件,则返回一个
cv::Mat对象,该对象表示读取到的图像数据。- 如果无法读取图像文件或文件路径错误,则返回一个空的
cv::Mat对象。
注意:OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载
2、显示图像 (cv::namedWindos 与cv::imshow)
using namespace cv;//函数用于创建一个窗口来显示图像
void namedWindow(const std::string& winname, int flags = WINDOW_AUTOSIZE);//函数用于在指定的窗口中显示图像
void imshow(const std::string& winname, const Mat& img);
参数说明:
winname:窗口名称,用于标识不同的窗口。flags:可选参数,指定窗口的行为,默认为cv::WINDOW_AUTOSIZE,表示窗口大小自动调整以适应图像大小。
(1)namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。
(2)常见用法namedWindow("Window Title", WINDOW_AUTOSIZE)
(3)WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小 WINDOW_NORMAL,跟QT集成的时候会使用,允许修改窗口大小。
3、修改图像 (cv::cvtColor)
cv::cvtColor:改变其颜色、空间,从一个色彩空间转换到另一个色彩空间。
原型如下:
using namespace cv;void cvtColor(const Mat& src, Mat& dst, int code, int dstCn = 0);
参数说明:
src:源图像,即要进行颜色空间转换的图像。dst:目标图像,用于存储转换后的图像。code:指定颜色空间转换的类型,例如cv::COLOR_BGR2GRAY表示将 BGR 彩色图像转换为灰度图像、COLOR_BGR2HLS;dstCn:可选参数,指定目标图像的通道数,默认为 0,表示与源图像通道数相同。
4、保存图像(cv::imwrite)
cv::imwrite 函数用于将图像保存到文件中。
using namespace cv;
using namespace std;bool imwrite(const string& filename, const Mat& img, const vector<int>& params = vector<int>());
参数说明:
filename:要保存的图像文件的路径和名称。img:要保存的图像。params:可选参数,用于指定保存图像的压缩参数。返回值:
- 如果成功保存图像,则返回 true。
- 如果保存失败,则返回 false。
(1)只有8位、16位的PNG、JPG、Tiff文件格式,而且是单通道或者三通道的BGR的图像才可以通过这种方式保存
(2)保存PNG格式的时候可以保存透明通道的图片
(3)可以指定压缩参数
5、代码演示
#include<opencv2\opencv.hpp>
#include<iostream>using namespace cv;
int main(int argc, char** argv)
{// 加载图像Mat src = imread("test.jpg");if (src.empty()){printf("could not load image...\n");return -1;}// 创建窗口namedWindow("test opencv setup", CV_WINDOW_AUTOSIZE);// 显示图像imshow("test opencv setup", src);// 创建窗口namedWindow("output windows", CV_WINDOW_AUTOSIZE);Mat output_image;// 修改图像//cvtColor(src, output_image, CV_BGR2GRAY);cvtColor(src, output_image, CV_BGR2HLS);// 显示图像imshow("output windows", output_image);// 保存图像//imwrite("output_image.png", output_image);imwrite("output_image.tif", output_image);// 等待按键waitKey(0);// 关闭窗口destroyAllWindows();return 0;
}
相关文章:
02- OpenCV:加载、修改、保存图像
目录 1、加载图像(cv::imread) 2、显示图像 (cv::namedWindos 与cv::imshow) 3、修改图像 (cv::cvtColor) 4、保存图像(cv::imwrite) 5、代码演示 1、加载图像(cv::imread) cv::imread 是 OpenCV 库中用于读取图像文件的函数…...
4面试题--数据库(mysql)
执⾏⼀条 select / update 语句,在 MySQL 中发⽣了什么? Server 层负责建⽴连接、分析和执⾏ SQL。MySQL ⼤多数的核⼼功能模块都在这实现,主要包括 连接器,查询缓存(8.0版本去除,因为每次更新将会清空该…...
【LeeCode】283.移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 解【做的有点呆,额外设置了计数器变量统计0的个数再从后往前赋0】:…...
OSG粒子系统与阴影-自定义粒子系统示例<2>(5)
自定义粒子系统示例(二) 目前自定义粒子的方法有很多,在OSG 中使用的是 Billboard 技术与色彩融合技术。色彩融合是一种高级的渲染技术,如果读者有兴趣,可参看 OSG 粒子系统实现的源代码。这里采用简单的布告牌技术(osg::Billboard)与动画来实…...
微软 Edge 浏览器目前无法支持 avif 格式
avif 格式在微软 Edge 浏览器中还是没有办法支持。 如果你希望能够查看 avif 格式,那么只能通过浏览器打开,然后浏览器将会把这个文件格式下载到本地。 avif 格式已经在其他的浏览器上得到了广泛的支持,目前不支持的可能就只有 Edge 浏览器。…...
用python实现文字转语音的5个较好用的模块
文章目录 一. 用 gtts 模块二. 用pyttsx3模块基本使用直接朗读更改语音、速率和音量 三. baidu-aip四. pywin32五. speech 一. 用 gtts 模块 参考文档:https://gtts.readthedocs.io/en/latest/ 使用前需要先安装:pip3 install gtts ,样例如…...
Windows Server 2012R2 修复CVE-2016-2183(SSL/TLS)漏洞的办法
一、漏洞说明 Windows server 2012R2远程桌面服务SSL加密默认是开启的,且有默认的CA证书。由于SSL/ TLS自身存在漏洞缺陷,当开启远程桌面服务,使用漏洞扫描工具扫描,发现存在SSL/TSL漏洞。远程主机支持的SSL加密算法提供了中等强度的加密算法,目前,使用密钥长度大于等于5…...
python统计字符串中大小写字符个数的性能实测与分析
给定一个字符串,统计字符串中大写字符个数,有如下三种方法: # method1 s1 len(re.findall(r[A-Z],content)) # method2 s2 sum(1 for c in content if c.isupper()) # method3 s3 0 for c in content:if c.isupper()True:s31经过多次实测…...
时间序列预测实战(十九)魔改Informer模型进行滚动长期预测(科研版本)
论文地址->Informer论文地址PDF点击即可阅读 代码地址-> 论文官方代码地址点击即可跳转下载GIthub链接 个人魔改版本地址-> 文章末尾 一、本文介绍 在之前的文章中我们已经讲过Informer模型了,但是呢官方的预测功能开发的很简陋只能设定固定长度去预测未…...
[PyTorch][chapter 64][强化学习-DQN]
前言: DQN 就是结合了深度学习和强化学习的一种算法,最初是 DeepMind 在 NIPS 2013年提出,它的核心利润包括马尔科夫决策链以及贝尔曼公式。 Q-learning的核心在于Q表格,通过建立Q表格来为行动提供指引,但这适用于状态…...
用好语言模型:temperature、top-p等核心参数解析
编者按:我们如何才能更好地控制大模型的输出? 本文将介绍几个关键参数,帮助读者更好地理解和运用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常见参数,以优化语言模型的生成效果。 文章详细解释了这些参数的作用…...
python之pycryptodome模块,加密算法库
一、简介 PyCryptodome是PyCrypto库的一个分支,它是Python中最受欢迎的密码学库之一。PyCryptodome提供了许多密码学算法和协议的实现,包括对称加密、非对称加密、消息摘要、密码哈希、数字签名等。它还提供了一些其他功能,如密码学安全随机…...
IDEA如何将本地项目推送到GitHub上?
大家好,我是G探险者。 IntelliJ IDEA 是一个强大的集成开发环境(IDE),它支持多种编程语言和工具。它也内置了对Git和GitHub的支持,让开发者可以轻松地将本地项目推送到GitHub上。以下是一个操作手册,描述了…...
Leetcode—45.跳跃游戏II【中等】
2023每日刷题(四十) Leetcode—45.跳跃游戏II 贪心法思想 实现代码 #define MAX(a, b) (a > b ? (a) : (b))int jump(int* nums, int numsSize) {int start 0;int end 1;int ans 0;int maxStride 0;while(end < numsSize) {maxStride 0;fo…...
基于Vue+SpringBoot的木马文件检测系统
项目编号: S 041 ,文末获取源码。 \color{red}{项目编号:S041,文末获取源码。} 项目编号:S041,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木…...
springboot内置Tomcat流程
1、org.springframework.boot.SpringApplication#initialize setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));加载了org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext 2、spring refres…...
Android修行手册-溢出父布局的按钮实现点击
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
Transformer——decoder
上一篇文章,我们介绍了encoder,这篇文章我们将要介绍decoder Transformer-encoder decoder结构: 如果看过上一篇文章的同学,肯定对decoder的结构不陌生,从上面框中可以明显的看出: 每个Decoder Block有两个…...
基于 STM32 的温度测量与控制系统设计
本文介绍了如何基于 STM32 微控制器设计一款温度测量与控制系统。首先,我们将简要介绍 STM32 微控制器的特点和能力。接下来,我们将详细讨论温度传感器的选择与接口。然后,我们将介绍如何使用 STM32 提供的开发工具和相关库来进行温度测量和控…...
python之pyqt专栏3-QT Designer
从前面两篇文章python之pyqt专栏1-环境搭建与python之pyqt专栏2-项目文件解析,我们对QT Designer有基础的认识。 QT Designer用来创建UI界面,保存的文件是"xxx.ui"文件,"xxx.ui"可以被pyuic转换为"xxx.py",而&…...
番茄小说下载器终极指南:三步将在线小说转为EPUB电子书
番茄小说下载器终极指南:三步将在线小说转为EPUB电子书 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否经常遇到网络信号不稳定而无法追更小说的困扰&#x…...
Cursor AI破解免费VIP终极完整指南:如何绕过试用限制享受Pro功能
Cursor AI破解免费VIP终极完整指南:如何绕过试用限制享受Pro功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reache…...
告别黑框!用PyQt5和Qt Designer给你的Python脚本做个可视化界面(附完整代码)
从命令行到可视化:PyQt5与Qt Designer高效GUI开发实战 每次运行Python脚本都要在黑色终端里输入命令,是不是已经让你感到厌倦?想象一下,当你把精心编写的脚本交给同事或客户时,他们面对那个闪烁的光标可能和你当初一样…...
TimeSformer在MMAction2里跑Kinetics400,我的显卡显存不够怎么办?优化与调参实战
TimeSformer在MMAction2中训练Kinetics400的显存优化实战指南 当我在实验室的RTX 3090上首次尝试用TimeSformer训练Kinetics400时,显存不足的报错让我意识到——Transformer类模型对硬件的要求确实苛刻。经过两周的反复试验和参数调整,我总结出一套针对…...
Doris Catalog实战指南:从创建到多源数据联邦查询
1. Doris Catalog核心概念解析 Doris Catalog是Apache Doris实现多源数据联邦查询的核心组件,简单理解它就像是数据世界的"图书馆管理员"。想象一下,你走进一个巨大的图书馆,里面有来自不同出版社(数据源)的…...
终极风扇控制指南:用免费软件彻底告别电脑噪音烦恼
终极风扇控制指南:用免费软件彻底告别电脑噪音烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...
从玩具车到真车:阿克曼模型在ROS与自动驾驶仿真中的配置避坑指南
从玩具车到真车:阿克曼模型在ROS与自动驾驶仿真中的配置避坑指南 当你第一次在Gazebo里加载那辆精致的仿真车模型时,满心期待它能在虚拟世界里优雅地转弯,结果却发现它要么像醉汉一样走S形路线,要么干脆表演原地陀螺——恭喜你&am…...
uniApp深色模式闪白?这5个优化技巧让你的App体验更流畅
uniApp深色模式闪白?这5个优化技巧让你的App体验更流畅 深夜刷手机时突然跳出的刺眼白光,就像凌晨三点突然被掀开被子——这种体验在深色模式应用中尤为致命。uniApp开发者们可能都遇到过这样的尴尬:精心设计的暗黑主题界面,在页面…...
借口的本质的庖丁解牛
它的本质是:一种为了维护“虚假自我形象”而构建的认知防火墙。借口是大脑为了保护自尊心(Ego)免受“我不够好”、“我失败了”这种痛苦真相的伤害,而临时编译的一段 错误处理逻辑 (Error Handling Logic) 。它将内部的“能力/意愿…...
【多模态大模型全链路优化实战白皮书】:20年架构师亲授从数据对齐、模态融合到推理加速的7大关键跃迁
第一章:多模态大模型全链路优化的演进逻辑与系统观 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的落地效能,不再仅由单点参数量或某类模态精度决定,而取决于数据、表示、对齐、推理与部署五大环节的协同演进。这一系统观要求…...
