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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/170201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis实战篇(一)短信登录

Redis实战篇&#xff08;一&#xff09;短信登录 1.1、导入黑马点评项目 1.1.1 、导入SQL 1.1.2、有关当前模型 手机或者app端发起请求&#xff0c;请求我们的nginx服务器&#xff0c;nginx基于七层模型走的事HTTP协议&#xff0c;可以实现基于Lua直接绕开tomcat访问redis&a…

截图转HTML代码,支持预览,前端不用浪费时间写html和css了

截图转代码 试用地址&#xff1a;https://picoapps.xyz/free-tools/screenshot-to-code 这个简单的应用可以将截图转换为HTML/Tailwind CSS代码。它使用GPT-4 Vision来生成代码&#xff0c;并使用DALL-E 3来生成类似的图像。现在你也可以输入一个URL来克隆一个现有的网站&#…

RuntimeError: CUDA error: device-side assert triggered

背景&#xff1a; 使用SAGEConv卷积层的图神经网络&#xff0c;网络架构如下 原因&#xff1a; 我在卷积层之前改变了特征矩阵的维度&#xff0c;原本为[172,1,32] 现在改为了 [172,2,32]。导致了特征矩阵x在进行 “x x.squeeze(1)” 操作时并没有将第二向量值去除&#xff08…

蓝桥杯每日一题2023.11.25

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 对于此题目最开始是递归想法&#xff0c;但发现题意中的匹配次数实际上是指在这8个字母中这8个字母每个字母对应的个数是否相同&#xff0c;如果相同则匹配。 此处我们可以使用subsrtr函数&#xff0c;每次循环截取8个字…

印刷基板开孔机上的直线导轨怎么安装?

直线导轨是属于高精度的传动元件&#xff0c;作为印刷基板开孔机重要的传动元件&#xff0c;倘若安装不当&#xff0c;严重则无法正常作业&#xff0c;轻则影响直线导轨的精度和寿命。那么&#xff0c;印刷基板开孔机的直线导轨是如何安装的呢&#xff1f; 在安装前&#xff0c…

中通单号查询,中通快递物流查询,将途经指定城市的单号筛选出来

批量查询中通快递单号的物流信息&#xff0c;并将途经指定城市的单号筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;第一次使用的朋友记得先注册&#x…

【差旅游记】走进新疆哈密博物馆

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 前些天在新疆哈密时&#xff0c;有天下午有点时间&#xff0c;看离住的宾馆不远就是哈密博物馆&#xff0c;便去逛了逛博物馆&#xff0c;由于接下来的一段时间没顾上记录&#xff0c;趁今天有些时间简单记录下那短暂的…

Centos 7 环境下 PostgreSQL 生产环境优化

生产服务器配置&#xff1a; 操作系统&#xff1a;Centos 7 64位 CPU&#xff1a;I5 10代 内存&#xff1a;8核 16G 硬盘&#xff1a;512G 1、调整内核参数&#xff1a; # 编辑 sysctl.conf 文件 vim /etc/sysctl.conf# 修改内容如下&#xff1a; # 提高内存缓冲区大小 kernel…

STM32 CAN协议讲解以及代码

STM32 CAN 文章目录 STM32 CAN前言一、CAN外设1.主控制寄存器CAN_MCR2.位时序寄存器CAN_BTR3.CAN的发送邮箱4.CAN的接收FIFO5.验收筛选器 二、代码配置1.初始化2.发送数据3.接收数据4.main.c 前言 前面学习了CAN的一些理论知识&#xff0c;他在我们的STM32里面是怎么用的呢 前…

【手写实现一个简单版的Dubbo,深刻理解RPC框架的底层实现原理】

手写实现一个简单版的Dubbo&#xff0c;深刻理解RPC框架的底层实现原理 RPC框架简介了解Dubbo的实现原理服务暴露服务引入服务调用 手写实现一个简单版的Dubbo服务暴露ServiceBeanProxyFactory#getInvokerProtocol#exportRegistryProtocol#export 服务引入RegistryProto#referD…

matlab画双坐标图的样式

matlab画双坐标图的样式 %% clc,clear,close all; t0:0.1:9*pi; figure; [AX,Ha,Hb]plotyy(t,sin(t),t,exp(t)); % 绘图并创建句柄 % ----------------- 设置刻度 set(AX(1),yTick,[-1.250:0.25:1.25]) % 设置左边Y轴的刻度 set(AX(2),yTick,[0:50:350]) …

服务器连接github

https://zhuanlan.zhihu.com/p/543490354 比着这个一步步做就行。 https://blog.l0v0.com/posts/94ffdbdf.html 上传文件可以看这个 注意&#xff1a; 密钥ssh-keygen设置好之后&#xff0c;以后就不用每次输入账号密码才能访问了。 otherwise&#xff0c;每次要输入账号密码。…

首页以卡片形式来展示区块链列表数据(Web3项目一实战之五)

我们已然在 Web3 分布式存储 IPFS(Web3项目一实战之四) 介绍了什么是IPFS,以及在本地电脑如何安装它。虽然在上一篇讲解了该怎么安装IPFS,也做了相应的配置,但在本地开发阶段,前端总是无法避免跨域这个远程请求api的”家常便饭的通病“。 很显然,对于出现跨域这类常见问…

文件批量改名方法:文件自动批量重命名,提升文件管理效率

在日常工作中随着工作时间的推移&#xff0c;在文件数量日益增长的情况下&#xff0c;会在电脑中积累大量的文件。如果文件名混乱无序&#xff0c;查找和识别重要文件将变得非常困难。这不仅会浪费大量的时间和精力&#xff0c;还可能导致重要文件的丢失或混乱。文件批量改名可…

高级驾驶辅助系统 (ADAS)介绍

随着汽车技术持续快速发展,推动更安全、更智能、更高效的驾驶体验一直是汽车创新的前沿。高级驾驶辅助系统( ADAS ) 是这场技术革命的关键参与者,是 指集成到现代车辆中的一组技术和功能,用于增强驾驶员安全、改善驾驶体验并协助完成各种驾驶任务。它使用传感器、摄像头、雷…

【数据结构实验】排序(三)快速排序算法的改进(三者取中法)

文章目录 1. 引言2. 快速排序算法2.1 传统快速排序2.2 三者取中法 3. 实验内容3.1 实验题目&#xff08;一&#xff09;输入要求&#xff08;二&#xff09;输出要求 3.2 算法实现 4. 实验结果 1. 引言 快速排序是一种经典的排序算法&#xff0c;其核心思想是通过选择一个基准元…

生活知识也需要学习--处理灰指甲

我的灰指甲从我读大学时发生&#xff0c;当时还患过鸡眼&#xff0c;还好同学爷爷有秘方&#xff0c;把鸡眼挑出&#xff08;无麻药&#xff09;&#xff0c;涂抹药膏&#xff0c;一次见效。 而左脚的灰指甲&#xff0c;也专门治疗过2次&#xff0c;但没有效果。 今天看到了柏…

armbian折腾之docker搭建chatgptweb指导(无需魔法)

文章目录 前言面板/docker的安装获取中转Key创建docker容器chatgpt-next-web部署[推荐]chatgpt-Web部署 推荐学习openai-hk官方的部署指导 前言 好久都没有折腾armbian&#xff0c;导致吃了很长时间的灰&#xff0c;今天偶然看到B站UP主JeeJK007的搭建视频&#xff0c;便想着能…

小程序如何禁止指定用户访问?如何设置指定用户才能访问?

​有些商家为了价格保密或者实行严格的会员制等原因&#xff0c;希望小程序能够限制某些人的访问或者设置指定人员才能访问。这种功能在小程序中&#xff0c;怎么支持这些功能呢&#xff1f;下面具体介绍。 一、禁止指定用户访问 禁止指定用户访问&#xff0c;可以通过小程序…

智能汽车十大网络安全攻击场景-《智能汽车网络安全权威指南》

引言 大家都很熟悉OWASP Top 10风险报告&#xff0c;这个报告不但总结了Web应用程序最可能、最常见、最危险的10大安全隐患&#xff0c;还包括了如何消除这些隐患的建议&#xff0c;这个“OWASP Top 10“差不多每隔三年更新一次。目前汽车网络安全攻击威胁隐患繁多&#xff0c…