11.java openCV4.x 入门- Imgcodecs之图像读写

专栏简介

💒个人主页
📰专栏目录

点击上方查看更多内容
📖心灵鸡汤📖

我们唯一拥有的就是今天,唯一能把握的也是今天


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
🧭文章导航🧭
⬆️ 10.特殊的Mat类汇总(二)
⬇️ 12.HighGui之图像窗口显示

Imgcodecs之图像读写

  • 一、字段
  • 二、读取图像
    • 1.读取单页图像
      • 1.imread
      • 2.imdecode​(Mat buf, int flags)
    • 2.读取多页图像
      • 1.imreadmulti​
      • 2.imdecodemulti
    • 3.haveImageReader
    • 4.imcount
  • 三、保存图像
    • 1.保存单页图像
      • 1.imwrite​
      • 2.imencode
    • 2.保存多页图像
      • 1.imwritemulti​
    • 2.haveImageWriter

  Imgcodecs类用于读取和保存图像。

一、字段

仅列举部分常用的字段

字段描述
IMREAD_ANYDEPTH如果设置,将返回16位/32位图像,否则将转换为8位
IMREAD_COLOR指定在加载图像时总是将其作为彩色图像读取,默认设置。如果原始图像是单通道黑白图,它将被转换为彩色图
IMREAD_GRAYSCALE指定在加载图像时总是将其作为灰度图像(单通道)读取
IMREAD_ANYCOLOR如果设置,图像将以任何可能的颜色格式读取
IMREAD_REDUCED_COLOR_2以彩色模式读取图像,但图像的尺寸被缩小为原始尺寸的1/2
IMREAD_REDUCED_GRAYSCALE_2以灰度模式读取图像,但图像的尺寸被缩小为原始尺寸的1/2
IMWRITE_PAM_FORMAT_RGB表示图像将以红绿蓝(RGB)颜色模型存储,这是彩色图像的标准格式
IMWRITE_JPEG_SAMPLING_FACTOR_444 设置JPEG色度子采样率为4:4:4,这是最高的色彩分辨率

二、读取图像

  仅列举部分方法。

1.读取单页图像

1.imread

1.从文件中加载图像

imread​(java.lang.String filename, int flags)
参数:
filename要加载的文件的地址
flags 标志,可以是IMREAD_*其一
        Mat imread = Imgcodecs.imread("img.png",Imgcodecs.IMREAD_GRAYSCALE);HighGui.imshow("imraed",imread);HighGui.waitKey();

2.imdecode​(Mat buf, int flags)

  从内存中的缓冲区读取图像。如果缓冲区太短或包含无效数据,则该函数返回一个空矩阵。

2.读取多页图像

  从文件中读取图像序列,特别是多页图像文件(如 TIFF)

1.imreadmulti​

imreadmulti​(java.lang.String filename, java.util.List mats, int start, int count, int flags)
参数:
filename要加载的文件的地址
mats Mat 对象的列表,用于存储读取的每一页图像
start 指定从文件中的哪一页开始读取
count指定要读取的页数
flags标志,可以是IMREAD_*其一

2.imdecodemulti

  从内存中的缓冲区读取多页图像​

3.haveImageReader

  如果指定的图像可以被OpenCV解码,则返回true

4.imcount

  获取给定文件中的图像数量。

imcount​(java.lang.String filename, int flags)
参数:
filename要加载的文件的地址
flags标志,可以是IMREAD_*其一

三、保存图像

  将图像写入到文件或缓存中

1.保存单页图像

1.imwrite​

imwrite​(java.lang.String filename, Mat img, MatOfInt params)
参数:
filename文件的名称
img要保存的图像
params 特定于格式的参数,以对的形式编码(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)
        Mat imread = Imgcodecs.imread("img.png");//质量压缩 80%MatOfInt params = new MatOfInt(Imgcodecs.IMWRITE_JPEG_QUALITY,80);Imgcodecs.imwrite("param.png",imread,params);

请自行验证压缩后的文件大小

2.imencode

  将图像编码为内存缓冲区中的数据

imencode​(java.lang.String ext, Mat img, MatOfByte buf, MatOfInt params)
参数:
ext定义输出格式的文件扩展名。必须以点开头
img 要写入的图像
buf 调整为适合压缩图像的输出缓冲区
params特定于格式的参数,以对的形式编码(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)
        Mat imread = Imgcodecs.imread("img.png");//质量压缩 80%MatOfInt params = new MatOfInt(Imgcodecs.IMWRITE_JPEG_QUALITY,80);//写入缓存中MatOfByte matOfByte = new MatOfByte();Imgcodecs.imencode(".png",imread,matOfByte,params);System.out.println("matOfByte = " + matOfByte);//读取缓存中的数据Mat imdecode = Imgcodecs.imdecode(matOfByte, Imgcodecs.IMREAD_COLOR);HighGui.imshow("imdecode",imdecode);HighGui.waitKey();

请自行验证

2.保存多页图像

1.imwritemulti​

  将多个图像保存到一个多页图像文件中。

imwritemulti​(java.lang.String filename, java.util.List img, MatOfInt params)
参数:
filename要创建的文件的名称
img 一个 Mat 对象的列表,每个 Mat 对象代表一个图像
params 与图像格式相关的参数,例如压缩的类型和质量。这是可选的,具体取决保存的文件格式
        Mat src1 = Imgcodecs.imread("src1.jpg");Mat src2 = Imgcodecs.imread("src2.jpg");List matList = new ArrayList<>();matList.add(src1);matList.add(src2);Imgcodecs.imwritemulti("ims.tif",matList);

2.haveImageWriter

  如果具有指定文件名的图像可以被OpenCV编码,则返回true

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

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

相关文章

如何关闭WordPress的自动更新功能

Wordpress为什么自动更新 WordPress自动更新是为了提供更好的安全性和稳定性。 安全性&#xff1a;WordPress是一个广泛使用的内容管理系统&#xff0c;因此成为恶意攻击的目标。WordPress的自动更新功能确保你的网站及时获得最新的安全补丁和修复程序&#xff0c;以保护你的网…

【智能优化算法】基于领导者优化的哈里斯鹰优化算法(LHHO)

01.引言 基于领导者优化的哈里斯鹰优化算法leader Harris hawks optimization (LHHO)&#xff0c;以增强Harris hawks optimization (HHO)的搜索能力。通过在探索阶段的适应性栖息和每一代哈里斯鹰的基于领导者的突变选择&#xff0c;可以实现更多的探索。使用经典的23个基准函…

跑模型——labelme的json文件转成yolo使用的txt文件(语义分割)

前言 将labelme多边形标注的json文件转换成yolo使用的txt文件 import os import json import numpy as np from tqdm import tqdm#实现函数 def json2txt(path_json, path_txt): # 可修改生成格式with open(path_json, r) as path_json:jsonx json.load(path_json)with open…

Flink常见面试问题(附答案)

目录 基础篇1. 什么是Apache Flink&#xff1f;2. Flink与Hadoop的区别是什么&#xff1f;3. Flink中的事件时间&#xff08;Event Time&#xff09;和处理时间&#xff08;Processing Time&#xff09;有什么区别&#xff1f;4. Flink的容错机制是如何实现的&#xff1f;5. 什…

node.js 包管理工具介绍 (npm与Yarn详细说明)

一、什么是包&#xff1f; 包&#xff08;package&#xff09;代表了一组特定功能的源码集合 二、什么是包管理工具&#xff1f; 也就是管理包的应用软件&#xff0c;可以对包进行下载、更新、删除、上传等操作。借助包管理工具&#xff0c;可以快速开发项目提升开发效率。包…

4.2.4 理解路由器数据包过程

1、实验目的 通过本实验可以掌握&#xff1a; 了解IP路由原理了解数据包封装和解封装的概念了解路由器路由和交换过程 2、实验拓扑 观察路由器路由数据包过程的实验拓扑如图4-3所示&#xff0c;设备接口地址信息如表4-2所示。 图4-3 观察路由器路由数据包过程的实验拓扑 本…

用Python编写GUI程序实现WebP文件批量转换为JPEG格式

在Python编程中&#xff0c;经常会遇到需要处理图片格式的情况。最近&#xff0c;我遇到了一个有趣的问题&#xff1a;如何通过编写一个GUI程序来实现将WebP格式的图片批量转换为JPEG格式&#xff1f;在这篇博客中&#xff0c;我将分享我使用Python、wxPython模块和Pillow库实现…

linux系统离线安装nginx

perlnginx是一个高性能的http和反向代理服务器&#xff0c;并发能力很强&#xff0c;一般用来做负载均衡比较多&#xff0c;分布式系统开发中用作web服务器。 一、下载 地址&#xff1a;nginx: download 我们下载这个稳定版本 二、环境依赖检查 nginx安装需要很多外部依赖&…

浅拷贝和深拷贝

1、两者区别&#xff1a; 首先对于一个对象中的基本数据类型&#xff0c;来做浅拷贝和深拷贝其实没有什么区别&#xff0c;都是将原始值复制一份给新的对象&#xff0c;但是对于对象中的引用数据类型来说&#xff0c;浅拷贝只是将引用数据类型的地址值复制一份给新的对象&#…

python开发poc,fofa爬虫批量化扫洞

学习使用python做到批量化的漏洞脚本 1.通过fofa搜索结果来采集脚本 2.批量化扫描漏洞 ---glassfish存在任意文件读取在默认48484端口&#xff0c;漏洞验证的poc为: "glassfish" && port"4848" && country"CN" http://loca…

Sybase ASE中的char(N)的坑以及与PostgreSQL的对比

1背景 昨天,一朋友向我咨询Sybase ASE中定长字符串类型的行为,说他们的客户反映,同样的char类型的数据,通过jdbc来查,Sybase库不会带空格,而PostgreSQL会带。是不是这样的?他是PostgreSQL的专业大拿,但因为他手头没有现成的Sybase ASE环境,刚好我手上有,便于一试。 …

flutter 安卓打包自定义名字

打包的名字如 app.1.0.1_relase_201283893.apk 实现 配置安卓项目的中的build.gradle &#xff08;android/app/build.gradle &#xff09; 新增 android { 内 applicationVariants.all { variant ->variant.outputs.all {def appName "拓车服管家" // 文件名…

Python实现读取dxf文件的所有字符

Python实现读取dxf文件的所有字符 import ezdxfdef read_dxf_and_print_text(filename):# 加载DXF文件doc ezdxf.readfile(filename)# 遍历所有的实体for entity in doc.entities:# 检查实体是否是TEXT、MTEXT或DIMENSIONif isinstance(entity, ezdxf.entities.Text):print(f…

SparkBug解决:Type mismatch; found : org.apache.spark.sql.Column required: Double

def assginFlag(aizmuth:Double):Option[Int] {val interval 0.5val index (aizmuth / interval ).toIntif (index > 0 && index < 720 ) Some(index 1) else None} assginFlag方法中的条件判断条件 (index > 0 && index < 720) 返回的是一个布…

计算机视觉——图像特征提取D2D先描述后检测特征提取算法原理

概述 局部特征提取是计算机视觉中的一个重要任务&#xff0c;它旨在从图像中提取出能够代表图像局部结构和外观信息的特征。这些特征通常用于图像匹配、物体识别、三维重建、跟踪和许多其他应用。传统方法&#xff0c;如尺度不变特征变换&#xff08;SIFT&#xff09;&#xf…

每天学习一个Linux命令之hostnamectl

每天学习一个Linux命令之hostnamectl 介绍 在Linux系统中&#xff0c;有许多命令都可以用来管理系统的各种配置&#xff0c;其中之一就是hostnamectl命令。hostnamectl命令可以用于查看和更改系统的主机名及相关设置。本篇博客将为您详细介绍hostnamectl命令&#xff0c;并列…

使用R语言计算矩形分布(均匀分布)并绘制图形

理论部分 矩形分布&#xff08;均匀分布&#xff09;&#xff0c;是指在某一区间内&#xff0c;随机变量取任何值的概率都是相同的。这种分布的概率密度函数在一个特定的区间内是一个常数&#xff0c;因此其图形呈现出一个矩形的形状&#xff0c;故得名为“矩形分布”。在概率…

【Spring进阶系列丨第八篇】Spring整合junit 面向切面编程(AOP)详解

文章目录 一、Spring整合junit1.1、导入spring整合junit的jar1.2、在测试类上添加注解1.3、说明 二、面向切面编程(AOP)2.1、问题引出2.2、AOP2.2.1、概念2.2.2、作用2.2.3、优势2.2.4、实现方式2.2.5、专业术语2.2.5.1、连接点2.2.5.2、切入点2.2.5.3、通知/增强2.2.5.4、织入…

5款最值得推荐的电脑监控软件丨高人气甄选

在企业和学校等场所&#xff0c;电脑监控软件被广泛应用于员工或学生的行为管理。 通过监控软件&#xff0c;管理者可以了解员工或学生的学习和工作情况&#xff0c;及时发现并纠正不当行为&#xff0c;提高工作效率和学习效果。同时&#xff0c;这类软件还可以用于保护企业机…

世链空投|zkLink空投代撸有哪些好处?zkLink空投代撸需要啥条件

世链空投(shilian.com)报道&#xff0c;随着2024年zkLink空投越来越火&#xff0c;zkLink空投代撸已经成为普通人一种常见的参与方式&#xff0c;并且越来越受到大众的欢迎。但是&#xff0c;普通人想要参与zkLink空投代撸&#xff0c;仍然需要了解什么是zkLink空投代撸&#x…