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

OpenCV 图像读取与显示

一、知识点:
1、读取图像
  (1)、Mat imread( const String & filename, int flags = IMREAD_COLOR_BGR );
  (2)、返回值: Mat,返回读取的图像。 若读取图像失败,则返回一个空的对象,对象.empty()为true。
  (3)、参数filename: String是std::string别名,要读取图像的文件名,带文件后缀。
  (4)、参数flags: 用于选择读取图像的方式,即用什么颜色格式读取图像,默认IMREAD_COLOR_BGR。
      IMREAD_UNCHANGED             //按原样返回加载的图像         
      IMREAD_GRAYSCALE             //将图像转换为单通道灰度图像 
      IMREAD_COLOR_BGR             //将图像转换为3通道BGR彩色图像        
      IMREAD_COLOR                 //同IMREAD_COLOR_BGR    
      IMREAD_ANYDEPTH              //当输入具有相应的深度时,返回16位/32位图像,否则将其转换为8位        
      IMREAD_ANYCOLOR              //以任何可能的颜色格式读取图像
      IMREAD_LOAD_GDAL             //使用gdal驱动程序加载图像       
      IMREAD_REDUCED_GRAYSCALE_2   //将图像转换为单通道灰度图像,图像大小减小1/2
      IMREAD_REDUCED_COLOR_2       //将图像转换为3通道BGR彩色图像,并将图像大小减小1/2
      IMREAD_REDUCED_GRAYSCALE_4   //将图像转换为单通道灰度图像,图像大小减小1/4
      IMREAD_REDUCED_COLOR_4       //将图像转换为3通道BGR彩色图像,并将图像大小减小1/4
      IMREAD_REDUCED_GRAYSCALE_8   //将图像转换为单通道灰度图像,图像大小减小1/8
      IMREAD_REDUCED_COLOR_8       //将图像转换为3通道BGR彩色图像,图像大小减小1/8
      IMREAD_IGNORE_ORIENTATION    //不要根据EXIF的方向标志旋转图像
      IMREAD_COLOR_RGB             //将图像转换为3通道RGB彩色图像 
      
2、显示图像
  (1)、void imshow(const String & winname, InputArray mat);
  (2)、参数winname: 用于显示图像的窗口名称,自定义。
  (3)、参数mat: 需要被显示的图像。
  (4)、默认情况下,imshow会自动调整窗口大小,将图片按原始大小显示,但当图片尺寸超过屏幕分辨率时,会发生图片显示不全问题。
  (5)、解决办法: 在imshow()之前调用namedWindow()。
  
3、创建窗口
  (1)、void namedWindow(const String & winname, int flags = WINDOW_AUTOSIZE);
  (2)、参数winname: 创建的窗口名称,自定义,用于标识窗口。 如果同名窗口已存在,则该函数不执行任何操作。
  (3)、参数flags: 窗口标志,默认WINDOW_AUTOSIZE。
      WINDOW_NORMAL        //用户可调整窗口大小,可将全屏窗口切换到正常大小
      WINDOW_AUTOSIZE      //用户无法调整窗口大小,大小受显示的图像限制
      WINDOW_OPENGL        //支持OpenGL的窗口
      WINDOW_FULLSCREEN    //将窗口设为全屏
      WINDOW_FREERATIO     //图像尽可能地扩展,无比例限制
      WINDOW_KEEPRATIO     //遵守图像比例
      WINDOW_GUI_EXPANDED  //状态栏和工具栏
      WINDOW_GUI_NORMAL    //老式的时尚方式
  (4)、窗口可以用作图像和轨迹条。
  
4、销毁窗口
  (1)、void destroyAllWindows();
  (2)、销毁所有打开的窗口。
  
5、等待按键
  (1)、int waitKey(int delay = 0);
  (2)、返回值: int型,返回按键代码。 若没有按键,指定时间过去,返回-1。
  (3)、参数delay: 等待时间,单位毫秒ms。 默认0,表示一直等待。
  
  
二、示例代码:

#include <iostream>
#include <opencv2/opencv.hpp>int main()
{cv::Mat src = cv::imread("C:\\Users\\ml\\Desktop\\Test\\MyOpenCVTest\\images\\1.png", cv::IMREAD_UNCHANGED);if (src.empty()){std::cout << "Could not load image..." << std::endl;return -1;}cv::namedWindow("加载图像", cv::WINDOW_FREERATIO);cv::imshow("加载图像", src);//辅助作用,如果不等待,代码会继续往后执行,销毁窗口、返回,程序会一闪而过,人眼看不到图像显示。cv::waitKey(0);cv::destroyAllWindows();return 0;
}

http://www.xdnf.cn/news/545365.html

相关文章:

  • 【工具使用】STM32CubeMX-USB配置-实现U盘功能
  • Python的collections模块:数据结构的百宝箱
  • 基于 Netty + SpringBoot + Vue 的高并发实时聊天系统设计与实现
  • Windows Ubuntu 目录映射关系
  • Vue2到Vue3迁移问题解析
  • fdisk和parted的区别
  • 数据结构测试模拟题(1)
  • mysql的基础命令
  • pycharm无需科学上网工具下载插件的解决方案
  • Brave 连接 Websocket 失败
  • 【LeetCode 热题 100】有效的括号 / 最小栈 / 字符串解码 / 柱状图中最大的矩形
  • 【Linux基础操作】
  • Linux jq 命令使用详解
  • 《安徽日报》聚焦珈和科技AI创新:智慧虫情测报护航夏粮提质丰产
  • Prompt Tuning:高效微调大模型的新利器
  • Vue3 中使用 provide/inject 实现跨层级组件传值失败的原因及解决方案
  • 分析 redis 的 exists 命令有一个参数和多个参数的区别
  • 区间内最远互质点对
  • 编程最接近现实的模拟---随机数
  • QT6 源(113)篇二:阅读与注释工具栏 QToolBar,给出源码
  • 彭博社聚焦Coinbase数据泄露,CertiK联创顾荣辉警示私钥风险与物理攻击
  • 安全工具配置
  • 21. 自动化测试框架开发之Excel配置文件的测试用例改造
  • [特殊字符] React Fiber架构与Vue设计哲学撕逼实录
  • 【Linux笔记】——简单实习一个日志项目
  • 以太联 - Intellinet 闪耀台北 SecuTech 国际安全科技应用博览会
  • C及C++的音频库与视频库介绍
  • MATLAB实现GAN用于图像分类
  • Spring Boot 集成 Elasticsearch【实战】
  • JAVA EE(进阶)_HTML