OpenCVForUnity(三)图像的读写

news2024/10/7 4:37:23

文章目录

  • 前言
  • 获得图像
      • 一、使用Imgcodecs.imread()读取图片
      • 二、关于imread()方法参数
      • 三、关于cvtColor()方法
      • 四、Utils.texture2DToMat()方法
  • 保存图像
      • 五、imwrite()保存图片:

前言

OpenCV工具主要是对于图像的处理,今天我们简单的来介绍一下如何获取一张图片,如何去储存一张图片。
介绍一些简单操作为后面的课程做准备,那么我们开始…

获得图像

一、使用Imgcodecs.imread()读取图片

Imgcodecs.imread()方法会读取制定地址上的图片文件,下面是一个读取并显示的例子:

string readPath = Application.dataPath + "/OpenCVForUnity/Examples/Resources/AA.png";
Mat A = Imgcodecs.imread(Utils.getFilePath(readPath), Imgcodecs.IMREAD_COLOR);
Imgproc.cvtColor(A, A, Imgproc.COLOR_RGB2BGR);
Texture2D textureA = new Texture2D(A.cols(), A.rows(), TextureFormat.RGBA32, false);
//将Mat的图片写入Texture2D中
Utils.matToTexture2D(A, textureA);
//显示出图片
objA.GetComponent<Renderer>().material.mainTexture = textureA;

输出效果:
在这里插入图片描述

二、关于imread()方法参数

第一个参数为路径
第二个参数为加载模式,如:
IMREAD_UNCHANGED 原样加载,四通道(如有第四通道)
IMREAD_GRAYSCALE 图片像强度加载(黑白图)
IMREAD_COLOR 图片以RGB模式加载

三、关于cvtColor()方法

由于openCV默认的储存方式是BGR.所以我们要把顺序调换过来
参数一:源Mat 参数二:目标Mat 参数三:转换模式
如果不使用这个方法,将输出效果如下:
在这里插入图片描述
OpenCV支持多种图像格式:
1.包括Windows位图(BMP)
2.便携式图像格式(PBM、PGM、PPM)
3.Sun光栅(SR、RAS)。
4.默认情况下加载JPEG(JPEG、JPG、JPE)、JPEG2000(JP2,使用CMake进行编码)
5.TIFF文件(TIFF、TIF)和便携式网络图形(PNG),并且还支持OpenEXR格式。
如果您建立自己的库,需要指定使用这些插件才能够支持它们。

四、Utils.texture2DToMat()方法

这个方法主要是把图片Texture2D写入Mat中

Texture2D imgTexture = Resources.Load("AA") as Texture2D;
Mat A = new Mat(imgTexture.height, imgTexture.width, CvType.CV_8UC4);
Utils.texture2DToMat(imgTexture, A);
//创建图片
Texture2D textureA = new Texture2D(A.cols(), A.rows(), TextureFormat.RGBA32, false);
//将Mat的图片写入Texture2D中
Utils.matToTexture2D(A, textureA);
//显示出图片
objA.GetComponent<Renderer>().material.mainTexture = textureA;

保存图像

五、imwrite()保存图片:

imwrite()可以用于保存图片,下面的例子是读取了图片时用的黑白模式,然后直接保存在制定地址

string readPath = Application.dataPath + "/OpenCVForUnity/Examples/Resources/AA.png";
string WritePath = Application.dataPath + "/OpenCVForUnity/Examples/Resources/AA1.png";
Mat A = Imgcodecs.imread(Utils.getFilePath(readPath), Imgcodecs.IMREAD_GRAYSCALE);
Texture2D textureA = new Texture2D(A.cols(), A.rows(), TextureFormat.RGBA32, false);
//写入图片
Imgcodecs.imwrite(WritePath, A);

关于imwrite方法
第一个参数为路径
第二个参数为要保存内容的Mat

运行结果输出的图片:
在这里插入图片描述

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

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

相关文章

基于 NNCF 和 Optimum 面向 Intel CPU 对 Stable Diffusion 优化

基于隐空间的扩散模型 (Latent Diffusion Model)&#xff0c;是解决文本到图片生成问题上的颠覆者。Stable Diffusion 是最著名的一例&#xff0c;广泛应用在商业和工业。Stable Diffusion 的想法简单且有效: 从噪声向量开始&#xff0c;多次去噪&#xff0c;以使之在隐空间里逼…

HTML元素中有中文、英文、符号、数字。第一行没排满就自动换行的解决办法:word-break:break-all的使用

word-break: break-all 是一个CSS属性&#xff0c;用于控制文本在容器中的换行方式。它的作用是强制在任意字符之间进行换行&#xff0c;即使这样可能会导致单词被分割。 具体来说&#xff0c;word-break 属性有以下几个取值&#xff1a; normal&#xff08;默认值&#xff09…

火伞云WAF产品的主要特点

Web应用程序防火墙&#xff08;WAF&#xff09;是抵御所有DDoS攻击的绝佳防御措施。它阻止恶意流量试图阻止应用程序中的漏洞。火伞云WAF通过安全专家的全天候监控支持DDoS保护解决方案&#xff0c;以识别虚假流量激增并在不影响合法流量的情况下阻止它们。 您可以在互联网和原…

win10系统切换到macOS,开发环境与软件资源,目录清单

文章目录 1、生活2、文书3、开发4、算法5、美术6、科研 1、因为考研自习室或学校图书馆&#xff0c;随身携带游戏本&#xff08;全能本&#xff09;受限于不插电源就不续航和掉性能&#xff0c;以及风扇噪音非常大&#xff0c;以及发热很烫等问题。 2、所以想考虑给主力机换个…

海外市场营销必备!八大技巧助力品牌出海

1、建立品牌故事和品牌形象&#xff1a;创造一个独特而有吸引力的品牌故事&#xff0c;通过品牌形象和价值观来吸引目标受众。这将帮助你在竞争激烈的市场中脱颖而出&#xff0c;并与消费者建立情感连接。 2、本地化和文化适应&#xff1a;理解并尊重目标市场的文化、习惯和价值…

智能仪表在光伏系统中的应用 安科瑞 许敏

光伏储能逆变器 应用场景 户用储能&#xff0c;小型工商业储能&#xff0c;微电网储能 功能 1.对电能参数进行采样计量和监测&#xff0c;逆变器或者能量管理系统&#xff08;EMS&#xff09;与之进行通讯&#xff0c;根据实时功率及累计电能实现防逆流、调节发电量、电池充…

操作Eureka出现Cannot execute request on any known server

操作Eureka出现Cannot execute request on any known server 客户端操作Eureka出现Cannot execute request on any known server 这可能是因为你没有在application.yml中配置 spring.application.name 导致注册到eureka上的状态名称不对。通常注册到Eureka默认为 ip:服务名:端…

Java字符串比较的方法(3种)

1.equals()方法 equals()方法将两个字符串每个字符是否相同进行逐一比较&#xff0c;若相同返回true反之返回false&#xff0c;对于字符的大小写也在检查范围内&#xff0c;equals()方法格式如下&#xff1a;str1.equals(str2); 程序实例 public class Demo {public static voi…

熬夜敲代码不伤眼,选好灯具很重要

文章目录 一、引言1.1 程序员的痛点&#xff1a;长时间使用电脑对眼睛的损害1.2 保护眼睛的重要性 二、明基ScreenBar Halo的保护眼睛功能2.1 自动调光&#xff1a;根据环境光调整亮度2.2 非对称光学设计&#xff1a;减少反光和刺眼2.3 沉浸式灯光&#xff1a;照亮全场视野&…

物流RFID设备在实际中的应用如何?

随着现代物流行业的快速发展&#xff0c;传统条码技术信息量少&#xff0c;易脏污损毁&#xff0c;耐用性不高等问题很难满足物流企业多样化的需求&#xff0c;物流RFID设备的应用也越来越广泛。下面我们就跟大家一起来分析一下&#xff0c;物流RFID设备可以在哪些场景中应用。…

电机和驱动器的简介

电机和驱动器的简介 按照工作电源种类划分&#xff1a;直流电机、交流电机。 按照结构和工作原理划分&#xff1a;永磁同步电动机、感应电动机。 常见的电机&#xff1a;直流电机&#xff08;直流有刷电机和直流无刷电机&#xff09;、步进电机、伺服电机和舵机。 直流电机 步…

了解 Python 设计模式

Python&#x1f40d;设计模式 Python 是一种功能强大的、基于对象的高级编程语言&#xff0c;具有动态类型和绑定功能。由于其灵活性和强大功能&#xff0c;开发人员经常采用某些规则或 Python 设计模式。究竟是什么让设计模式如此重要&#xff0c;这对普通的Python开发人员意味…

基于51单片机和proteus的水质水位检测系统

此系统是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. LCD1602实时显示水质和水位状态。 2. 按键可设定水质检测阈值并通过LCD显示。 3. LED指示水质水位和系统运行状态。 4. 水质差超过阈值后自动启动排水泵。 5. 水位过低时自动启动进水泵。 6…

BI如何对接金蝶云星空数据源?奥威BI SaaS平台有绝招

传统BI部署时需要大量硬件和软件支持&#xff0c;而SaaS BI不仅不需要&#xff0c;还能让企业的数据可视化分析变得更加简单便捷&#xff0c;因此已经渐渐成为数字化时代的BI新趋势。那么&#xff0c;SaaS BI平台是如何快速接入数据完成数据可视化分析的&#xff1f;下面就以奥…

基于Python制作一个简单的文章搜索工具

这篇文章主要为大家详细介绍了如何基于Python制作一个简单的文章搜索工具&#xff0c;都是一些基础的应用&#xff0c;文中的示例代码讲解详细&#xff0c;感兴趣的可以了解一下 前言 今天&#xff0c;我无聊的时候做了一个搜索文章的软件&#xff0c;有没有更加的方便快捷不知…

R和python中dataframe读取方式总结

首先我有一个如图所示的文件 如果在python中读取 import pandas as pd df pd.read_csv("./6group_count.csv",index_col0) df而在R中读取的方式如下 df read.csv("./6group_count.csv",row.names 1)

springboot 集成Druid的监控数据库连接池的最佳实践

免费的chatgpt福利送上 http://124.220.104.235:31105/web/chatgpt 1.数据库连接池介绍 1.1JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时&#xff0c;传统的模式基本是按以下步骤 在主程序&#xff08;如servlet、beans&#xff09;中建立数据库连接 进行sql…

Mybatis-plus通用查询方法封装

定义DTO package com.lbdj.user.service.dto;import com.lbdj.toolkit.utils.ReturnField; import com.lbdj.toolkit.utils.SFunction; import lombok.Data;/*** 用户DTO** author 作者* since 2023-06-27*/ Data public class LbdjUserDTO {/*** 主键*/private Long id;priva…

Oracle表设计

设计原则 为了建立冗余较小、结构合理的数据库&#xff0c;设计数据库时必须遵循一定的规 则。在关系型数据库中这种规则就称为范式。 范式是符合某一种设计要求的总结。 要想设计一个结构合理的关系型数据库&#xff0c;必须满足一定的范式。在实际开发中最为 常见的设计范式…

Auto.js 填充布局 layout_weight=“1“

当我在编写界面布局时&#xff0c;遇到了一个需求&#xff1a; 顶部和底部有按钮&#xff0c;而中间部分需要填满剩余空间且高度未知。 我通过使用layout_weight"1"完美解决我的问题&#xff0c;在这里记录一下。 "ui"; ui.layout(<vertical><te…