4.java openCV4.x 入门-Mat之创建、复制

news2024/11/28 4:29:57
专栏简介

💒个人主页
📰专栏目录

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

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


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
🧭文章导航🧭
⬆️ 3.数据类型(CvType)与Scalar
⬇️ 5.待更新

Mat之创建、复制

  • 一、Size对象
    • 1.构造函数
    • 2.方法介绍
      • 1. area()
      • 2.empty()
      • 3.set​(double[ ] vals)
  • 二、Point对象
    • 1.构造函数
    • 2.方法介绍
      • 1. dot​(Point p)
      • 2.inside​(Rect r)
  • 三、Mat之创建操作
    • 1.方法介绍
      • 1.create
      • 2.ones
      • 3.zeros​
      • 4.eye
      • 5.clone
  • 四、Mat之复制转换操作
    • 1.方法介绍
      • 1.assignTo
      • 2.copySize
      • 3.copyTo​

   本节只列举一些创建复制操作相关的函数,这之前先简单了解下Size对象和Point对象

一、Size对象

Size类用于表示图像的尺寸大小。它是一个具有宽度和高度属性的类,可以用来描述图像、矩形区域或其他需要尺寸信息的对象。
Size类的主要作用包括:
描述图像的尺寸:可以使用Size类的对象来表示图像的宽度和高度。这对于图像处理和分析任务非常重要,例如调整图像大小、裁剪图像、计算图像的比例等。
计算矩形区域的尺寸:Size类可以用来计算矩形区域的宽度和高度。这对于目标检测、物体跟踪和图像分割等任务非常有用。
作为函数的返回值类型:在OpenCV的许多函数中,Size类常被用作返回值类型,用于表示函数操作后得到的图像或区域的尺寸。

1.构造函数

在这里插入图片描述

  构造函数挺简单的,它接收宽和高两个参数。这里我们可以看到Size​(Point p)这个构造函数,它接收一个Point对象创建Size对象,Point是一个点对象,通过接受x,y坐标定义一个点。如下所示

  Size size = new Size(new Point(5,5));

它表示创建一个5x5大小的Size对象。相当于创建一个从(0,0)坐标开始到(5,5)坐标结束的一个图像尺寸。

2.方法介绍

  这里仅列举出 部分方法。

1. area()

   返回Size对象的面积,即宽度乘以高度的结果

2.empty()

  验证Size是否为空。如果Size对象的宽度和高度都为0,则返回true;否则返回false。

3.set​(double[ ] vals)

   设置Size对象的值。vals一个包含两个元素的double数组,其中第一个元素表示宽度,第二个元素表示高度。通过这个方法将设置的两个值分别赋给Size对象的width和height属性

二、Point对象

  Point类是一个表示二维坐标点的类。它包含了两个成员变量x和y,分别表示点的横坐标和纵坐标。

1.构造函数

在这里插入图片描述

2.方法介绍

  这里只列举部分方法,

1. dot​(Point p)

  计算当前点与另一个点p的点积(dot product)。对于二维空间中的两个点A(x1, y1)和B(x2, y2),它们的点积可以通过以下公式计算:
  dot = x1 * x2 + y1 * y2
其中,x1和y1是当前点的坐标,x2和y2是点p的坐标。

        Point point1=new Point(1,2);
        Point point2=new Point(2,4);
        double dot = point1.dot(point2);
        System.out.println("dot = " + dot);

2.inside​(Rect r)

  判断该点是否在指定的矩形内部。Rect 用来表示矩阵大小的位置的,这个我们先了解下即可,稍后章节中再具体的了解下这个类。

        // 创建一个矩形区域
        Rect rect = new Rect(0, 0, 100, 100);
        // 创建一个点
        Point point1 = new Point(50, 50);
        Point point2 = new Point(150, 100);
        // 判断点是否在矩形区域内
        boolean inside1 = point1.inside(rect);
        boolean inside2 = point2.inside(rect);
        // 输出结果
        System.out.println("point1.inside(rect) = " + point1.inside(rect));
        System.out.println("point2.inside(rect) = " + point2.inside(rect));

结果:

point1.inside(rect) = true
point2.inside(rect) = false

三、Mat之创建操作

  创建相关的方法

1.方法介绍

1.create

  除了使用构造函数直接初始化Mat对象外,还可以通过create方法为Mat对象赋值
在这里插入图片描述
如下使用create​(Size size, int type)创建

        Mat mat = new Mat();
        mat.create(new Size(3,3), CvType.CV_8UC(3));

2.ones

  创建一个所有元素都为1的矩阵

        Mat ones = Mat.ones(3, 3, CvType.CV_8UC1);

3.zeros​

  创建一个所有元素都为0的矩阵

4.eye

  创建一个对角线上值为1,其它位置为0的矩阵

5.clone

  复制当前矩阵,并返回一个新的矩阵。请自行验证

四、Mat之复制转换操作

  复制相关的方法

1.方法介绍

1.assignTo

  将当前Mat对象的数据复制到指定的Mat对象中。也可以理解为覆盖替换操作

2.copySize

  将另一个Mat对象的大小复制给当前的Mat对象

3.copyTo​

   将当前的Mat对象复制到另一个Mat对象中

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

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

相关文章

C# 高级文件操作与异步编程探索(初步)

文章目录 文本文件的读写探秘StreamReader 类深度剖析StreamWriter 类细节解读编码和中文乱码的解决方案 二进制文件的读写BinaryReader 类全面解析BinaryWriter 类深度探讨 异步编程与C#的未来方向同步与异步:本质解读Task 的神奇所在async/await 的魔法 在现代编程…

window配置RUST开发环境详解

1.先安装VS2022: 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com) 2.下载Rustup-init.exe Other Installation Methods - Rust Forge 3.运行rustup-init.exe开始安装rust开发环境: 安装成功出现下图所示 %USERPROFILE%\.cargo\bin 添加cargo安装路…

mysql 本地电脑服务部署

前提: 下载mysql 新建配置文档 在安装mysql目录新建 my.ini [mysqld] # 设置3306端口 port3306#设置mysql的安装目录 basedirC:\Program Files\MySQL\MySQL Server 8.3 #切记此处一定要用双斜杠\\,单斜杠我这里会出错,不过看别人的教程,有…

【软件工程】详细设计(一)

1. 引言 1.1 编写目的 该文档的目的是描述《学生成绩管理系统》项目的详细设计,其主要内容包括: 系统功能简介 系统详细设计简述 各个模块的实现逻辑 最小模块组件的伪代码 本文档的预期的读者是: 开发人员 项目管理人员 测试人员 …

Spring(详细介绍)

目录 一、简介 1、什么是Spring? 2、Spring框架的核心特性 3、优点 二、IOC容器 介绍 1、获取资源的传统方式 2、控制反转方式获取资源 3、DI 4、IOC容器在Spring中的实现 入门案例 1、创建Maven Module 2、引入依赖 3、创建HelloWorld类 4、在Spring的配…

Linux------一篇博客了解Linux最常用的指令【后续将持续更新完成】

🎈个人主页:靓仔很忙i 💻B 站主页:👉B站👈 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:Linux 🤝希望本文对您有所裨益,如有不足之处&#…

HarmonyOS 应用开发之多端协同

多端协同流程 多端协同流程如下图所示。 图1 多端协同流程图 约束限制 由于“多端协同任务管理”能力尚未具备,开发者当前只能通过开发系统应用获取设备列表,不支持三方应用接入。 多端协同需遵循 分布式跨设备组件启动规则。 为了获得最佳体验&…

春招冲刺百题计划--矩阵篇

289. 生命游戏 题目: 给定一个包含 m n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与…

mysql执行脚本导入表和数据后中文注释乱码解决

本人在使用不同版本下进行操作时,就会出现中文乱码的问题。例如我本地安装mysql8,服务器安装的是mysql5,然后本地连接服务器的mysql后,执行SQL脚本之后发现中文全部乱码 使用工具查看,注释也都是乱码 解决方案 本地…

PyLMKit(9):ChatTable与你的表格聊天,表格问答

功能介绍 与你的结构化数据聊天:支持主流数据库、表格型excel等数据! ChatDB:支持数据库问答ChatTable:支持txt,excel,csv等pandas dataframe表格的问答 1.下载安装 pip install pylmkit -U pip install pandasql2.ChatTable实…

百度“超模”、三大开发神器组团出道?李彦宏2024年度演讲提前剧透!

未来程序员会消失吗?一个大模型能适配一切吗?大模型太贵用不起怎么办?AI时代最好用的工具长什么样?——这些行业热议问题,将在两周后得到答案。 4月16日,百度创始人、董事长兼首席执行官李彦宏将在2024百度…

构建安全高效的用户登录系统:登录流程设计与Token验证详解

在当今数字化时代,用户登录系统是几乎所有在线服务的基础。然而,随着网络安全威胁的不断增加,设计一个安全可靠的登录系统变得至关重要。本文将深入探讨用户登录流程的设计原则以及Token验证的实现方式,带您了解如何构建安全高效的…

题目:小蓝的零花钱(蓝桥OJ 3236)

问题描述&#xff1a; 解题思路&#xff1a; 计算每个可以切割的位置的费用(cnt)&#xff0c;从小到大枚举每个切割费用&#xff0c;当切割总费用大于手里的钱时停止&#xff0c;最后枚举的已切割位置总数就是答案。 #include<bits/stdc.h> using namespace std; const …

科学高效备考2024年汉字小达人:历年真题详细解析-古诗文专题

距离2024年第11届汉字小达人比赛还有七个多月的时间&#xff0c;如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。阅读理解不需要。②把历年真题刷刷熟&#xff0c…

物料主数据管理难在哪?基于AI算法的数据清洗工具了解一下

引言 数据清洗在处理大量的、不一致的、错误的或者不完整的数据时扮演着至关重要的角色。随着数据量的不断膨胀&#xff0c;有效的数据清洗工具和方法变得尤为重要。 数据清洗作为数据管理和治理的重要组成部分&#xff0c;近年来受到了国家层面的高度重视&#xff0c;并出台了…

Python保留字与obspy安装

保留字&#xff1a; 被编程语言内部定义并保留使用的标识符。Python有33个保留字 andelifimportraiseglobalaselseinreturnnonlocalassertexceptistryTrue breakfinallylambdawhileFalseclassfornotwithNonecontinuefromoryielddefifpassdel 最近在安装obspy时经常&am…

[SpringCloud] Feign Client 的创建 (二) (五)

文章目录 1.自动配置FeignAutoConfiguration2.生成 Feign Client2.1 从Feign Client子容器获取组件2.2 Feign Client子容器的创建2.3 构建Feign Client实例 1.自动配置FeignAutoConfiguration spring-cloud-starter-openfeign 包含了 spring-cloud-openfeign-core FeignAutoCo…

解决echarts xAxis设置type:‘value‘后 x轴有负值的时候 Y轴在0点显示

前提&#xff1a;xAxis设置type:‘value’ 数据&#xff1a;data里面含有负数值&#xff0c;导致Y坐标轴一直在 X&#xff08;0&#xff09;上面显示 解决方案&#xff1a; yAxis里面设置 axisLine: { onZero:false } yAxis:{type: value,name:测试,axisLine: { onZero:false …

Rust 机器学习图形库 petgraph

一、介绍 Petgraph 是一个开源的图数据结构库&#xff0c;提供了非常丰富的图形类型和算法&#xff0c;并且支持将图形以 Graphviz 格式输出&#xff0c;还允许你为图的节点和边赋予任意类型的数据&#xff0c;从而能够灵活地处理和表示复杂的数据关系。 Petgraph 支持边的方…

【Linux多线程】生产者消费者模型

【Linux多线程】生产者消费者模型 目录 【Linux多线程】生产者消费者模型生产者消费者模型为何要使用生产者消费者模型生产者消费者的三种关系生产者消费者模型优点基于BlockingQueue的生产者消费者模型C queue模拟阻塞队列的生产消费模型 伪唤醒情况&#xff08;多生产多消费的…