当前位置: 首页 > 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

http://www.lryc.cn/news/114742.html

相关文章:

  • requests 方法总结
  • Go语言删除文本文件中的指定行
  • Arthas GC日志-JVM(十八)
  • ISC 2023︱诚邀您参与赛宁“安全验证评估”论坛
  • 分享一个计算器
  • Android 13 Launcher——长按图标弹窗背景变暗
  • Elasticsearch概述和DSL查询总结
  • 扩展卡尔曼滤波器代码
  • 9:00开始面试,9:08就出来了,这问题问的实在是····
  • 揭秘:5个美国程序员与日本程序员的差异
  • Springboot实现简单JWT登录鉴权
  • C++设计模式创建型之工厂模式整理
  • 前端安全XSS和CSRF讲解
  • 本地化部署自建类ChatGPT服务远程访问
  • 一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)
  • 安全防御(3)
  • AR远程专家指导在汽车改装上的应用有哪些?
  • css-3:什么是响应式设计?响应式的原理是什么?如何做?
  • Armstrong数,n位数等于其各位数的n次方之和。
  • blender的下载安装和配置中文环境
  • MyCat配置rule.xml、server.xml讲解
  • Linux项目部署
  • 案例:Docker 镜像的创建及使用(commit与dockerfile方式)
  • QGIS二次开发三:显示Shapefile
  • FFmpeg中相关结构体介绍
  • Llama 2 云端部署与API调用【AWS SageMaker】
  • 根文件系统制作
  • Linux ARM64架构 动态替换 altinstructions
  • Mac显示隐藏文件夹
  • 使用 Habana Gaudi2 加速视觉语言模型 BridgeTower