当前位置: 首页 > news >正文

openCV图像读取和显示

文章目录

  • 一、imread
  • 二、namedWindow
  • 三、imshow

#include <opencv2/opencv.hpp>
#include <iostream>using namespace std;
using namespace cv;int main(int argc,char** argv)
{cv::Mat img = imread("./sun.png"); //3通道 24位if (img.empty()) {std::cout << "could not load image!\n" << endl;return -1;}namedWindow("input",WINDOW_FREERATIO);imshow("input",img);std::cout << "load image!\n" << endl;//0 阻塞 1停顿一毫秒waitKey(0);destroyAllWindows();return 0;
}

运行
图像读取

一、imread

imread是OpenCV图像处理库中的一个函数,用于从文件中读取图像数据并将其存储为一个Mat对象

cv::Mat cv::imread(const String& filename,    // 文件路径int flags = IMREAD_COLOR   // 图像读取标志,默认为彩色图像
);

其中,参数filename指定了要读取的图像文件的路径和文件名;参数flags指定了读取图像时的标志,它是一个可选参数,默认值为IMREAD_COLOR,表示读取彩色图像。

imread函数支持读取多种图像格式的文件,包括PNG、JPEG、BMP、GIF、TIFF等。读取的图像数据存储在一个Mat对象中,可以通过Mat对象的成员函数来访问和操作图像数据。

需要注意的是,如果指定的文件不存在或格式不正确,imread函数会返回一个空的Mat对象。因此,在调用imread函数之后,需要检查返回值是否为空,以确保图像已经正确读取。

imread函数的flags参数用于指定图像的读取方式,它是一个可选参数,如果不指定则默认为IMREAD_COLOR,即读取彩色图像。flags参数可以取以下几个值之一:

  • IMREAD_UNCHANGED:读取原始图像,包括图像的alpha通道(如果存在的话),并将其存储在Mat对象中。

  • IMREAD_GRAYSCALE:以灰度模式读取图像,将图像转换为单通道灰度图像,并将其存储在Mat对象中。

  • IMREAD_COLOR:读取彩色图像,将图像转换为三通道BGR格式,并将其存储在Mat对象中。

  • IMREAD_ANYDEPTH:读取图像的像素深度为16位或32位的图像,将其存储在Mat对象中。

  • IMREAD_ANYCOLOR:读取图像的颜色格式为任意格式的图像,将其存储在Mat对象中。

  • IMREAD_REDUCED_GRAYSCALE_2:以降采样的灰度模式读取图像,将图像转换为单通道灰度图像,并将其存储在Mat对象中,图像大小减半。

  • IMREAD_REDUCED_GRAYSCALE_4:以降采样的灰度模式读取图像,将图像转换为单通道灰度图像,并将其存储在Mat对象中,图像大小缩小为原来的四分之一。

  • IMREAD_REDUCED_GRAYSCALE_8:以降采样的灰度模式读取图像,将图像转换为单通道灰度图像,并将其存储在Mat对象中,图像大小缩小为原来的八分之一。

    需要注意的是,IMREAD_ANYDEPTH和IMREAD_ANYCOLOR两个标志不能单独使用,必须与其他标志一起使用。同时,降采样的灰度模式只适用于灰度图像,对于彩色图像则无效。

二、namedWindow

namedWindow是OpenCV图像处理库中的一个函数,用于创建一个窗口对象,以便后续在该窗口中显示图像或执行其他操作。

void namedWindow(const String& winname,  // 窗口名称int flags = WINDOW_AUTOSIZE  // 窗口属性,默认为自适应大小
);

其中,参数winname指定了创建的窗口的名称,可以是任意字符串;参数flags指定了创建的窗口的属性,它是一个可选参数,默认值为WINDOW_AUTOSIZE,表示创建一个自适应大小的窗口,即窗口的大小会自动调整以适应要显示的图像的大小。如果将flags设置为WINDOW_FREERATIO,则创建的窗口可以手动调整大小,即可以通过鼠标拖动窗口边框来改变窗口大小,并且图像的宽高比会保持不变。

namedWindow函数的flags参数用于指定创建的窗口的属性,它是一个可选参数,如果不指定则默认为WINDOW_AUTOSIZE,即创建一个自适应大小的窗口。flags参数可以取以下几个值之一:

  • WINDOW_NORMAL:创建一个手动调整大小的窗口,可以通过鼠标拖动窗口边框来改变窗口大小,并且图像的宽高比会保持不变。
  • WINDOW_AUTOSIZE:创建一个自适应大小的窗口,即窗口的大小会自动调整以适应要显示的图像的大小。
  • WINDOW_FREERATIO:创建一个手动调整大小的窗口,可以通过鼠标拖动窗口边框来改变窗口大小,并且图像的宽高比也可以随意改变。
    需要注意的是,WINDOW_NORMAL和WINDOW_FREERATIO两个标志不能同时使用,只能选择其中一个。

三、imshow

imshow是OpenCV图像处理库中的一个函数,用于在指定的窗口中显示图像。

void imshow(const String& winname,  // 窗口名称InputArray mat  // 要显示的图像
);

其中,参数winname指定了要在哪个窗口中显示图像,它必须与之前使用namedWindow函数创建的窗口名称相同;参数mat是要显示的图像,它可以是Mat、UMat、MatExpr等类型的对象。


推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:
C++初级课程链接:
https://ke.qq.com/course/444655?flowToken=1043280
Qt课程链接:
https://ke.qq.com/course/444655?flowToken=1044614

相关文章:

openCV图像读取和显示

文章目录 一、imread二、namedWindow三、imshow #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main(int argc,char** argv) {cv::Mat img imread("./sun.png"); //3通道 24位if (img.empty()) {std:…...

requests 方法总结

当使用 requests 库进行接口自动化测试时&#xff0c;以下是一些详细的步骤和方法总结&#xff1a; 1. **安装 requests 库**&#xff1a;首先&#xff0c;确保你已经安装了 requests 库。可以使用 pip 命令进行安装&#xff1a;pip install requests。 2. **导入库**&#x…...

Go语言删除文本文件中的指定行

GO语言删除文本文件中的指定行 1. 思路2. 处理文件3. 处理后的文本文件 1. 思路 假设现在有一个文本文件&#xff0c;我们需要删除文件中乱码的行。我们可以使用go的os库来处理文件&#xff0c;遍历整个文件然后将除过乱码的行写入一个新文件&#xff0c;以此来实现我们的需求…...

Arthas GC日志-JVM(十八)

上篇文章说jvm的实际运行情况。 Jvm实际运行情况-JVM&#xff08;十七&#xff09; Arthas介绍 因为arthas完全是java代码写的&#xff0c;我们直接用命令启动&#xff1a; Java -jar arthas-boot.jar 启动成功后&#xff0c;选择我们项目的进程。 进入我们可用dashboard…...

ISC 2023︱诚邀您参与赛宁“安全验证评估”论坛

​​8月9日-10日&#xff0c;第十一届互联网安全大会&#xff08;简称ISC 2023&#xff09;将在北京国家会议中心举办。本次大会以“安全即服务&#xff0c;开启人工智能时代数字安全新范式”为主题&#xff0c;打造全球首场AI数字安全峰会&#xff0c;赋予安全即服务新时代内涵…...

分享一个计算器

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>计算器</title><style>* {box-sizing: border-box;}body…...

Android 13 Launcher——长按图标弹窗背景变暗

目录 一.背景 二.修改代码 一.背景 客户定制需要长按图标弹窗让其背景变暗,所以需要进行定制,如下是定制流程,本篇是接上篇https://gonglipeng.blog.csdn.net/article/details/132171100 的内容 二.修改代码 主要代码逻辑在ArrowPopup中的reorderAndShow方法和closeCom…...

Elasticsearch概述和DSL查询总结

目录 Elasticsearch概述 1. 什么是Elasticsearch 2. 作用 3. 特点 DSL&#xff08;Domain Specifit Language&#xff09;特定领域语言&#xff1a; 概念和作用 查询代码总结 最后附项目准备 1.创建搜索工程&#xff08;maven工程&#xff09; 2.配置文件 application…...

扩展卡尔曼滤波器代码

文章目录 前言问题状态向量和观测向量加性噪声的形式状态方程及求导观测方程及求导状态初始化过程噪声和观测噪声卡尔曼滤波过程code 前言 卡尔曼滤波器在1960年被卡尔曼发明之后&#xff0c;被广泛应用在动态系统预测。在自动驾驶、机器人、AR领域等应用广泛。卡尔曼滤波器使…...

9:00开始面试,9:08就出来了,这问题问的实在是····

外包工作3年&#xff0c;今年裸辞跳槽&#xff0c;很幸运的是找到了下家&#xff0c;不过 自从加入到这家公司&#xff0c;每天不是在加班就是在加班的路上&#xff0c;薪资倒是给的不少&#xff0c;所以我也就忍了。没想到6月一纸通知&#xff0c;所有人都不许加班&#xff0…...

揭秘:5个美国程序员与日本程序员的差异

大家好&#xff0c;这里是程序员晚枫。想了解更多精彩内容&#xff0c;快来关注程序员晚枫 今天以美国和日本程序员为例&#xff0c;给大家分享一下国外程序员的生活。 以下是五个美国程序员和日本程序员的的区别&#xff1a; 工作方式&#xff1a;美国程序员通常更注重自由和…...

Springboot实现简单JWT登录鉴权

登录为啥需要鉴权&#xff1f; 登录需要鉴权是为了保护系统的安全性和用户的隐私。在一个 Web 应用中&#xff0c;用户需要提供一定的身份信息&#xff08;例如用户名和密码&#xff09;进行登录&#xff0c;登录后系统会为用户生成一个身份令牌&#xff08;例如 JWT Token&am…...

C++设计模式创建型之工厂模式整理

一、工厂模式分类 工厂模式属于创建型模式&#xff0c;一般可以细分为简单工厂模式、工厂模式和抽象工厂模式。每种都有不同的特色和应用场景。 二、工厂模式详情 1、简单工厂模式 1&#xff09;概述 简单工厂模式相对来说&#xff0c;在四人组写的《设计模式------可复用面…...

前端安全XSS和CSRF讲解

文章目录 XSSXSS攻击原理常见的攻击方式预防措施 CSRFCSRF攻击原理常见攻击情景预防措施&#xff1a; CSRF和XSS的区别 XSS 全称Cross Site Scripting&#xff0c;名为跨站脚本攻击。为啥不是单词第一个字母组合CSS&#xff0c;大概率与样式名称css进行区分。 XSS攻击原理 不…...

本地化部署自建类ChatGPT服务远程访问

本地化部署自建类ChatGPT服务远程访问 文章目录 本地化部署自建类ChatGPT服务远程访问前言系统环境1. 安装Text generation web UI2.安装依赖3. 安装语言模型4. 启动5. 安装cpolar 内网穿透6. 创建公网地址7. 公网访问8. 固定公网地址 &#x1f340;小结&#x1f340; 前言 Te…...

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)

概念与功能&#xff1a; webpack是前端项目工程化的具体解决方案。它提供了友好的前端模块化开发支持&#xff0c;以及代码压缩混淆、处理浏览器端JavaScript的兼容性、性能优化等强大的功能。 快速上手&#xff1a;隔行变色 -S实际是--save的简写&#xff0c;表示安装的第三方…...

安全防御(3)

1.总结当堂NAT与双机热备原理&#xff0c;形成思维导图 2.完成课堂nat与双机热备试验 引用IDS是指入侵检测系统&#xff0c;它可以在网络中检测和防御入侵行为。IDS的签名是指根据已知入侵行为的特征制定的规则&#xff0c;用于检测和警告可能存在的入侵行为。签名过滤器可以根…...

AR远程专家指导在汽车改装上的应用有哪些?

随着科技的不断发展&#xff0c;AR增强现实技术逐渐走进了我们的生活。加上商贸国际化&#xff0c;远程协同纵深到制造生产的更多环节&#xff0c;研发协同、工艺优化等场景复杂、跨层级、需要频繁沟通确认的流程正通过AR应用实现全面远程化的过渡&#xff0c;在汽车行业&#…...

css-3:什么是响应式设计?响应式的原理是什么?如何做?

1、响应式设计是什么&#xff1f; 响应式网站设计&#xff08;Responsive WEB desgin&#xff09;是一个网络页面设计布局&#xff0c;页面的设计与开发应当根据用户行为以及设备环境&#xff08;系统平台、屏幕尺寸、屏幕定向等&#xff09;进行相应的相应和调整。 描述响应式…...

Armstrong数,n位数等于其各位数的n次方之和。

//Armstrong数具有以下特征&#xff1a;一个n位数等于其各位数的n次方之和。 //例如&#xff1a;1531^35^33^3 16341^46^43^44^4 #include<stdio.h> #include<math.h> //实在不知道的暴力求解方法 int main() {//Armstrong数具有以下特征&#xff1a;一个…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...

接口 RESTful 中的超媒体:REST 架构的灵魂驱动

在 RESTful 架构中&#xff0c;** 超媒体&#xff08;Hypermedia&#xff09;** 是一个核心概念&#xff0c;它体现了 REST 的 “表述性状态转移&#xff08;Representational State Transfer&#xff09;” 的本质&#xff0c;也是区分 “真 RESTful API” 与 “伪 RESTful AP…...

Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集

目录 一、引言&#xff1a;当爬虫遭遇"地域封锁"二、背景解析&#xff1a;分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计&#xff1a;Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…...