OpenCV图像文件读写(5)从文件系统中读取图像的标准函数imread()的使用

news2024/9/27 5:49:05
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

从文件加载图像。

imread 函数从指定的文件加载图像并返回它。如果图像无法读取(因为文件缺失、权限不当、格式不受支持或无效),函数返回一个空矩阵 (Mat::data == NULL)。

目前支持的文件格式如下:

  • Windows 位图 - *.bmp, *.dib (始终支持)
  • JPEG 文件 - *.jpeg, *.jpg, *.jpe (参见注意事项部分)
  • JPEG 2000 文件 - *.jp2 (参见注意事项部分)
  • 便携式网络图形 - *.png (参见注意事项部分)
  • WebP - *.webp (参见注意事项部分)
  • AVIF - *.avif (参见注意事项部分)
  • 便携式图像格式 - *.pbm, *.pgm, *.ppm, *.pxm, *.pnm (始终支持)
  • PFM 文件 - *.pfm (参见注意事项部分)
  • Sun 位图 - *.sr, *.ras (始终支持)
  • TIFF 文件 - *.tiff, *.tif (参见注意事项部分)
  • OpenEXR 图像文件 - *.exr (参见注意事项部分)
  • Radiance HDR - *.hdr, *.pic (始终支持)
  • 由 GDAL 支持的栅格和矢量地理空间数据 (参见注意事项部分)

注意事项
函数根据内容而不是文件扩展名确定图像类型。
在处理彩色图像的情况下,解码后的图像将以 B G R 顺序存储通道。
当使用 IMREAD_GRAYSCALE 时,如果可用,将使用编解码器内部的灰度转换。结果可能与 cvtColor() 的输出不同。
在 Microsoft Windows* 操作系统和 MacOSX* 上,默认使用随 OpenCV 图像一起发布的编解码器(libjpeg, libpng, libtiff 和 libjasper)。因此,OpenCV 始终可以读取 JPEG、PNG 和 TIFF 文件。在 MacOSX 上,还有一个选项可以使用原生 MacOSX 图像阅读器。但是请注意,目前这些原生图像加载器由于嵌入到 MacOSX 中的颜色管理而导致像素值不同。
在 Linux*、BSD 风味及其他类 Unix 开源操作系统上,OpenCV 查找随操作系统图像提供的编解码器。安装相关的包(别忘了开发文件,例如 Debian* 和 Ubuntu* 中的 “libjpeg-dev”)以获取编解码器支持或将 CMake 中的 OPENCV_BUILD_3RDPARTY_LIBS 标志设为开启。
如果你在 CMake 中将 WITH_GDAL 标志设为 true 并使用 IMREAD_LOAD_GDAL 加载图像,则会使用 GDAL 驱动程序解码图像,支持的格式包括:栅格、矢量。
如果图像文件中嵌入了 EXIF 信息,那么 EXIF 方向信息将被考虑,并相应地旋转图像,除非传递了 IMREAD_IGNORE_ORIENTATIONIMREAD_UNCHANGED 标志。
使用 IMREAD_UNCHANGED 标志以保持 PFM 图像中的浮点值。
默认情况下,像素数量必须少于 (2^{30})。限制可以通过系统变量 OPENCV_IO_MAX_IMAGE_PIXELS 设置。

cv::imread 函数是 OpenCV 中用于从文件系统中读取图像的标准函数。这个函数可以读取各种格式的图像文件,并返回一个 cv::Mat 对象,其中包含了图像数据。

函数原型


Mat cv::imread	
(
	const String & 	filename,
	int 	flags = IMREAD_COLOR 
)		

参数

  • 参数 filename 要加载的文件的名称。
  • 参数flags 可以取 cv::ImreadModes 值的标志。

返回值

cv::Mat:读取的图像数据。如果读取失败,则返回一个空的 cv::Mat 对象。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 图像文件路径
    std::string filename = "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg";

    // 使用 cv::imread 读取图像
    cv::Mat img = cv::imread( filename, cv::IMREAD_COLOR );

    if ( img.empty() )
    {
        std::cout << "Failed to load image." << std::endl;
        return -1;
    }

    // 显示图像
    cv::namedWindow( "Loaded Image", cv::WINDOW_NORMAL );
    cv::imshow( "Loaded Image", img );
    cv::waitKey( 0 );

    return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

IDEA使用技巧和插件推荐

作为专业开发人员&#xff0c;选择一个强大的集成开发环境&#xff08;IDE&#xff09;是至关重要的。IntelliJ IDEA&#xff08;简称IDEA&#xff09;不仅功能丰富&#xff0c;而且操作便捷&#xff0c;是众多开发者的首选。本文将分享一些使用IDEA的技巧&#xff0c;以及推荐…

测试部署单副本 oceanbase-3.2.4.1 企业版

由于项目需要&#xff0c;测试部署单副本 oceanbase-3.2.4.1 企业版 1.安装前提 准备4cpu,12G内存,100G磁盘 统为centos7.9 yum install -y yum-utils wget net-tools tree yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo 2.创建用…

SLF4J报错log4j又报错

项目场景&#xff1a; 搭建一个spirngboot项目&#xff0c;启动运行时&#xff0c;SLF4J报错 解决后 ~ log4j又报错了。 问题描述 首先是SLF4J报错了&#xff0c;解决完SL4J报错问题后&#xff0c;再次启动项目&#xff0c;log4j又报错了 。。。 报错信息&#xff1a; SLF4J…

IDEA Dependency Analyzer 分析 maven 项目包的依赖

一、场景分析 javax.validation 是我们 SpringMVC 常用的数据校验框架。但是 javax.validation 是一个规范&#xff08;Java Bean Validation&#xff0c;简称 JSR 380&#xff09;&#xff0c;它并没有具体的实现&#xff0c;它的常用实现&#xff0c;是hibernate-validator。…

【知了社保-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

CentOs-Stream-9 解决此系统未向授权服务器注册问题

RPM包注册安装问题 无法执行yum安装rpm问题(后面安装Mysql会遇到)&#xff1a;This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register. Mysql5.7本地无法注册&#xff1a; Mysql8本地无法…

EtherNET IP 转 Profinet 网关:工业通信的桥梁

在工业自动化领域&#xff0c;不同设备之间的通信协议兼容性是一个关键问题。EtherNET IP 和 Profinet 作为两种常用的工业以太网协议&#xff0c;各自在不同的设备和系统中广泛应用。而 EtherNET IP 转 Profinet 网关则成为了连接这两个不同协议世界的桥梁&#xff0c;发挥着至…

OJ在线评测系统 后端 用策略模式优化判题机架构

判题机架构优化(策略模式) 思考 我们的判题策略可能会有很多种 比如 我们的代码沙箱本身执行程序需要消耗时间 这个时间可能不同的编程语言是不同的 比如沙箱执行Java要额外花费2秒 我们可以采用策略模式 针对不同的情况 定义不同独立的策略 而不是把所有情况全部放在一个i…

【Mysql】数据库系统和Mysql

1、数据库系统 数据库&#xff08;Database&#xff09;是一个以某种组织方式存储在磁盘上的数据当代集合。 2、数据库应用 数据库应用系统是指基于数据库的应用软件。 3、数据库管理系统&#xff08;数据库软件&#xff09; &#xff08;1&#xff09;关系型数据库&#…

【JAVA高级】 redis分布式双重加锁(业务校验:防止接口并发调用时数据重复)

文章目录 此问题的考虑思路使用Redis的key-value锁的基本思路结合Redis数据结构实现避免重复注意事项实现代码只避免 name和age的重复避免 name和age的和age和sex重复&#xff1a;使用双重的分布式锁实现&#xff1a; 背景&#xff1a;在日常开发过程中&#xff0c;遇到了一个需…

FGPA实验——触摸按键

本文系列都基于正点原子新起点开发板 FPGA系列 1&#xff0c;verlog基本语法&#xff08;随时更新&#xff09; 2&#xff0c;流水灯&#xff08;待定&#xff09; 3&#xff0c;FGPA实验——触摸按键 一、触摸操作原理实现 分类&#xff1a;电阻式&#xff08;不耐用&…

SVN文件不显示修改状态图标

今天安装试用SVN时发现文件不显示修改状态 以下为解决方法&#xff1a; 1&#xff0c;在有.svn的文件夹中右键--tortoiseSvn--setting 2&#xff0c;选中icon Overlays&#xff0c;右侧的status cache 选shell 3&#xff0c;点击icon set 如下图所示 4&#xff0c;修改icon…

MySQL扩展

一、慢查询&#xff08;慢日志&#xff09; 默认关闭的 定位慢SQL 简单&#xff1a;show profile&#xff0c;启用时会对服务器的性能产生额外的负担 -- 启用性能监控 mysql> set profiling1;-- 执行SQL mysql> SELECT * from member-- 性能分析 mysql> show p…

AOT源码解析4.4 -decoder生成预测mask并计算loss

3、生成ref_imgs的预测mask和loss 这一步在训练阶段调用 3.1 数据处理 图1&#xff0c;如图1所示&#xff0c;将enc_embs的最后一个比例的特征图和有ref_imgs相关的特征图得到的LSTT特征图相拼接作为输入 curr_enc_embs self.curr_enc_embscurr_lstt_embs self.curr_lstt_o…

卷轴模式商城APP开发搭建全流程解析

卷轴模式商城APP的开发搭建是一个综合性强、涉及多个关键步骤和技术环节的过程。本文将详细介绍从需求分析到最终发布的各个阶段&#xff0c;旨在为开发者renxb001提供一个清晰的开发指导方案。 一、需求分析 目标用户群体&#xff1a;首先&#xff0c;明确APP的目标用户&…

openKylin--安装 .net6.0

编辑profile文件 cd .. //切换到根目录 cd /etc //切换到etc目录 vim profile //b编辑profile文件 1. 按→键移动到文件末尾 2. 按Insert键进入编辑模式 3. 按Enter另起一行开始编辑 export DOTNET_ROOT/home/dotnetexport PATH$PATH:/home/dotnet 可以通过右键--粘贴 的…

基于skopt的贝叶斯优化基础实例学习实践

贝叶斯方法是非常基础且重要的方法&#xff0c;在前文中断断续续也有所介绍&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《数学之美番外篇&#xff1a;平凡而又神奇的贝叶斯方法》 《贝叶斯深度学习——基于PyMC3的变分推理》 《模型优化调参利器贝叶斯优化bay…

Brave编译指南2024 MacOS篇-引言与准备工作(一)

引言 随着互联网隐私和安全问题日益突出,用户对安全浏览器的需求不断增加。Brave浏览器作为一款注重隐私保护和性能优化的开源浏览器,吸引了越来越多开发者的关注。本系列文章将详细介绍如何在MacOS环境下编译Brave浏览器,为有兴趣深入了解和定制Brave的开发者提供指导。 1. …

【智能控制】16章 基于Hopfield网络的路径优化,TSP问题

目录 15.6 基于Hopfield网络的路径优化 15.6.1 TSP问题 15.6.2 求解TSP问题的Hopfield神经网络设计 15.6 基于Hopfield网络的路径优化 15.6.1 TSP问题 旅行商问题&#xff08;Traveling Salesman Problem&#xff0c;简称TSP&#xff09;可描述为&#xff1a;已知N个城市之…

CloudMusic:免费听歌

本文所涉及所有资源均在 传知代码平台可获取。 目录 概述 演示效果 视频演示 图片展示 核心逻辑 获取歌曲图片 提取搜索结果 使用方式 部署方式 Docker部署1 构建镜像 Web站点部署2 附件下载 概述 CloudMusic是一款全网歌曲免费听的web项目&#xff0c;无需任何数据库&#x…