3.java openCV4.x 入门-数据类型(CvType)与Scalar

专栏简介

💒个人主页
📰专栏目录

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

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


🧭文章导航🧭
⬆️ 2.hello openCV
⬇️ 4.待更新

数据类型(CvType)与Scalar

  • 一、CvType
    • 1.数据类型
    • 2.方法介绍
      • 1.channels​(int type)
      • 2.CV_8UC​(int ch)
      • 3.depth​(int type)
      • 4. ELEM_SIZE​(int type)
      • 5.isInteger​(int type)
      • 6. makeType​(int depth, int channels)
      • 7.typeToString​(int type)
  • 二、Scalar
    • 1.构造函数
    • 2.方法介绍
      • 1.all​(double v)
      • 2.clone()
      • 3.conj()
      • 4.equals​(java.lang.Object obj)
      • 5.hashCode()
      • 6.⚠️isReal()
      • 7.mul​(Scalar it)
      • 8.mul​(Scalar it, double scale)
      • 9.set​(double[ ] vals)

   上一节我们简单的了解了下数据类型,这里我们说下CvType类中的函数作用和Scalar对象

一、CvType

   📢一个常量类,用于指定矩阵的数据类型和通道数。它提供了多种预定义的数据类型,例如 CV_8U(8位无符号整数)、CV_32F(32位浮点数)

1.数据类型

  F 表示浮点数,S 表示有符号整数,U 表示无符号整数,C1…C4 表示单通道…四通道

2.方法介绍

   示例已贴出,请自行验证

1.channels​(int type)

   获取给定数据类型对应的通道数。

        System.out.println("通道数= " + CvType.channels(CvType.CV_8SC4));

2.CV_8UC​(int ch)

   给定一个通道数,创建换一个与之相应的数据类型,其它类似的函数作用是一样的,比如CV_16FC​(int ch)CV_32SC​(int ch)等方法。

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

如示例所示,CvType.CV_8UC(3)等同于CvType.CV_8UC3

3.depth​(int type)

   获取深度值,即获取对应的数据类型,返回一个int值。

        CvType.depth(CvType.CV_8UC3);

如示例所示,返回的深度值为0,关于其它数据类型对应的值我们可以在jar包中找到,如下所示:

在这里插入图片描述

4. ELEM_SIZE​(int type)

   获取给定数据类型每个元素的大小。元素大小是描述矩阵或数组元素类型的另一个组成部分,用于确定每个元素所需的存储空间。
  例如,对于一些常见的数据类型,ELEM_SIZE(int type) 的返回值可能是:
  对于 8 位无符号整数类型(如 CV_8UC1),返回值为 1,因为每个元素占用 1 字节。
  对于 32 位浮点数类型(如 CV_32FC1),返回值为 4,因为每个元素占用 4 字节。
  对于 64 位浮点数类型(如 CV_64FC1),返回值为 8,因为每个元素占用 8 字节。

System.out.println("CvType.CV_8UC3 = " + CvType.ELEM_SIZE(CvType.CV_8UC3));

这里仅提供一个示例,请验证下其它数据类型的字节大小

5.isInteger​(int type)

  判断数据类型是否为整数类型。

 System.out.println("CvType.isInteger(CvType.CV_8UC1) = " + CvType.isInteger(CvType.CV_8UC1));
 System.out.println("CvType.isInteger(CvType.CV_16FC1) = " + CvType.isInteger(CvType.CV_16FC1));

6. makeType​(int depth, int channels)

  根据指定的深度和通道数创建一个数据类型。

 Mat mat = new Mat(3,3,CvType.makeType(CvType.CV_8U,1));

如示例所示CvType.makeType(CvType.CV_8U,1)等同于CvType.CV_8UC1等同于CvType.CV_8UC(1)

7.typeToString​(int type)

  将给定的数据类型转换为对应的字符串表示形式

二、Scalar

Scalar类的作用包括:
  表示颜色:
  Scalar类可以用于表示颜色,可以通过指定蓝、绿、红三个分量的数值来表示一个颜色。例如,Scalar(255, 0, 0)表示蓝色,Scalar(0, 255, 0)表示绿色,Scalar(0, 0, 255)表示红色。
  表示灰度值:
  Scalar类也可以用于表示灰度颜色空间中的颜色,只需指定一个数值即可。例如,Scalar(128)表示灰度值为128的颜色。
  总之,Scalar类是OpenCV中用于表示颜色的类,可以用于表示BGR颜色和灰度颜色,并且支持一些基本的运算。

1.构造函数

在这里插入图片描述  v0,v1,v2,v3分别表示蓝色通道值、绿色通道值、红色通道值、透明度

2.方法介绍

  比较简单的方法就不列举示例了。请自行验证

1.all​(double v)

  创建一个具有相同值的Scalar对象

 System.out.println("Scalar.all(10) = " + Scalar.all(10));

创建一个所有通道都是10的Scalar对象

2.clone()

  创建并返回当前 Scalar 对象的一个副本。

3.conj()

  返回一个共轭的Scalar对象。共轭在当前是指即具有相同信息(元素值)同时也具有与之对应信息(元素值)的两个对象。如下所示(示例仅用于演示,不考虑数据的合理性

        Scalar scalar = new Scalar(1,2,3,4);
        Scalar conj = scalar.conj();
        System.out.println("scalar = " + scalar);
        System.out.println("conj = " + conj);

结果如下

scalar = [1.0, 2.0, 3.0, 4.0]
conj = [1.0, -2.0, -3.0, -4.0]

4.equals​(java.lang.Object obj)

  比较两个Scalar对象是否相等

5.hashCode()

  返回对象的哈希码值

6.⚠️isReal()

  判断通道是否含有实数。这个函数有点特殊。我们查看源码

    public boolean isReal() {
        return this.val[1] == 0.0 && this.val[2] == 0.0 && this.val[3] == 0.0;
    }

可以看出,它只判断v1,v2,v3通道全为0时返回true,不包含v0,这样的话,我们也可以用它判断是不是灰度值。请自行验证,这里就不举例了

7.mul​(Scalar it)

  当前Scalar对象的每个分量与另一个Scalar对象的对应分量进行乘法运算

        Scalar scalar = new Scalar(1,2,3,4);
        Scalar scalar_mum = new Scalar(1,2,3,4);
        Scalar mul = scalar.mul(scalar_mum);
        System.out.println("mul = " + mul);

结果

mul = [1.0, 4.0, 9.0, 16.0]

8.mul​(Scalar it, double scale)

  对当前对象进行乘法运算,与上面方法不同的是,在进行乘法运算后,再对每个分量值与scale值进行乘法运算。请自行验证

9.set​(double[ ] vals)

  设置Scalar值,接受的 是一个double对象,其中的值按顺序分别代表v0,v1,v2,v3的值

        Scalar scalar = new Scalar(1,2,3,4);
        double [] vals = {2,3,4,5};
        scalar.set(vals);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法】字典序超详细解析(让你有一种相见恨晚的感觉!)

目录 一、前言 二、什么是字典序 ? ✨字典序概念 ✨深度理解字典序 ✨字典序排序的重要性和应用场景 三、常考面试题 ✨ 下一个排列 ✨ 字典数排序 ✨ 字典序最小回文串 四、共勉 一、前言 经常刷算法题的朋友,肯定会经常看到题目中提到 字典序 这样…

AutoMQ 如何实现分区持续重平衡?

01 引言 在一个线上 Kafka 集群中,流量的波动、Topic 的创建和删除、Broker 的消亡和启动都随时可能发生,而这些变化可能导致流量在集群各个节点间分布不均,从而导致资源浪费、影响业务稳定。此时则需要主动将 Topic 的不同分区在各个节点间…

mysql 磁盘空间100%

MySQL大事务可能会导致过多的占用临时文件,导致磁盘空间撑满的问题 本例说明下binlog cache产生的临时文件 案例复现 调小binlog_cache_size,让DML使用临时文件 使用存储过程模拟大事务 创建表 create table t1( id int AUTO_INCREMENT, name varchar…

[蓝桥杯练习]通电

kruskal做法(加边) #include <bits/stdc.h> using namespace std; int x[10005],y[10005],z[10005];//存储i点的x与y坐标 int bcj[10005];//并查集 struct Edge{//边 int v1,v2; double w; }edge[2000005]; int cmp(Edge a, Edge b){return a.w < b.w;} int find(i…

视频素材库哪个网站最好?推荐六大视频素材库

大家好&#xff01;在视频创作的旅程中&#xff0c;找到一个好的视频素材库就像找到了一把打开宝藏的钥匙。那么&#xff0c;视频素材库哪个网站最好呢&#xff1f;今天&#xff0c;我要给大家推荐六个主流的视频素材分享网站&#xff0c;让你的视频制作更加轻松&#xff0c;在…

Goby 漏洞发布|浙大恩特客户资源管理系统 RegulatePriceAction SQL 注入漏洞

漏洞名称&#xff1a; 浙大恩特客户资源管理系统 RegulatePriceAction SQL 注入漏洞 English Name&#xff1a; Entsoft Duite Customer Resource Management System RegulatePriceAction API SQL Injection Vulnerability CVSS core: 9.3 影响资产数&#xff1a;10524 漏洞…

揭秘!自定义三维模型如何在RflySim中实现仿真(二)

一. 技术背景 揭秘&#xff01;自定义三维模型如何在RflySim中实现仿真&#xff08;一&#xff09; 上篇文章我们学习了自定义三维模型如何在RflySim中实现仿真&#xff0c;接下来要学习三维场景导入RflySim的实验&#xff1a;将UE4自带场景导入RflySim平台&#xff0c;熟悉从…

Vue项目中引入外部字体文件

1、导入字体文件&#xff08; .ttf格式&#xff09; 1.下载相应的字体文件&#xff0c;或者找ui设计师要一份。一般字体文件使用 .ttf 格式的即可。 将准备好的字体文件&#xff0c;放在项目中&#xff0c;文件目录示例如下&#xff1a; 2.创建一个font.css文件用于定义这个字…

zookeeper快速入门四:在java客户端中操作zookeeper

系列文章&#xff1a; zookeeper快速入门一&#xff1a;zookeeper安装与启动-CSDN博客 zookeeper快速入门二&#xff1a;zookeeper基本概念-CSDN博客 zookeeper快速入门三&#xff1a;zookeeper的基本操作 先启动zookeeper服务端。 在maven引入zookeeper依赖。 <depende…

C++项目——集群聊天服务器项目(十三)客户端登录、注册、退出业务

截止到上节&#xff0c;我们已将服务器端主要代码介绍完毕&#xff0c;由于不可能一直手动输入信息&#xff0c;所以我们还需编写客户端代码&#xff0c;进行双向通信。 客户端不要求高并发&#xff0c;因此我们这里不使用muduo网络库的TcpClient类编写&#xff0c;仅采用C自带…

ComplexHeatmap绘图:注释、图例、热图基础(自备)

目录 基础介绍 Heatmap绘图基础参数 数据 作图参数 Heatmap Annotations&#xff08;注释&#xff09; 基础注释设置 简单注释测试 anno_points散点注释 anno_lines连线注释 anno_barplot条形图 anno_boxplot箱线图 anno_histogram直方图 热图组合 基础组合 进行…

使用idea一次性删除java文件中所有的注释内容 /* */

将.class文件转成.java文件后&#xff0c;.java文件每行都会生成注释/* */&#xff0c;下面是通过idea的替换功能&#xff0c;使用正则表达式删除注释/* */。 我使用MacBook&#xff0c;commandR打开替换查找替换界面&#xff0c;第一步选中 .* &#xff0c;第二步在…

虚拟机与开发板之间互传文件、文件夹

1.配置桥接模式实现外网访问 1.1设置 VMnet0 要桥接的网卡 打开【编辑】-【虚拟网络编辑器】 选择【更改设置】 选择【VMnet0】&#xff0c;选择桥接到宿主机上的哪个网卡。 通过打开安装虚拟机的宿主机的【网络适配器】&#xff0c;可以查看网卡名称。 1.2虚拟机配置桥接模式…

Idea2023创建Servlet项目

① Java EE 只是一个抽象的规范&#xff0c;具体实现称为应用服务器。 ② Java EE 只需要两个包 jsp-api.jar 和 servlet-api.jar&#xff0c;而这两个包是没有官方版本的。也就是说&#xff0c;Java 没有提供这两个包&#xff0c;只提供了一个规范。那么这两个包是谁提供的…

Java23种常见设计模式汇总

七大原则网站地址&#xff1a;设计模式7大原则&#xff0b;类图关系-CSDN博客 创建型设计模式&#xff1a;创建型设计模式合集-CSDN博客 七大结构型设计模式&#xff1a;7大结构型设计模式-CSDN博客 11种行为型设计模式&#xff1a; 11种行为型模式&#xff08;上&#xff0…

Xmind安装在指定目录

场景&#xff1a; Xmind安装默认是安装C盘。 问题描述 一般用户都习惯将软件安装在其他盘&#xff0c;但是Xmind不支持安装的时候指定磁盘或目录。 解决方案&#xff1a; 1、在D盘创建一个文件夹&#xff0c;用于安装Xmind&#xff0c;比如创建一个D:\Program Files (x86)…

MyBatis动态SQL--if 标签

mybatis动态sql对我们来说是非常常见的&#xff0c;比如在下面这样一个场景中&#xff0c; 我们需要多条件查询&#xff0c;但是查询的条件又不是固定的&#xff0c;是可以动态改变的&#xff0c;那我们就需要用到动态sql去完成。 动态SQL之 if 标签 接下来我们介绍第一个动态…

【Java代码审计】S2-045 远程代码执行漏洞分析复现

【Java代码审计】S2-045 远程代码执行漏洞分析复现 1.漏洞原理2.靶场复现 1.漏洞原理 官方对该漏洞的描述是这样的&#xff1a;Struts2 默认处理 multipart 上传报文的解析器为 Jakarta 插件&#xff08;org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest类&a…

基于opencv的SVM算法的车牌识别系统设计与实现

基于opencv的SVM算法的车牌识别系统设计与实现 车牌识别技术是智能交通系统中的一项关键技术&#xff0c;它能够自动识别车辆的车牌号码。本文将详细介绍如何使用Python编程语言结合OpenCV库和SVM算法来实现车牌识别系统。 系统架构 车牌识别系统主要包括以下几个模块&…

外贸建站:WordPress搭建外贸独立站零基础自建站完整教程(2024)

对于做外贸来说&#xff0c;拥有自己的外贸独立网站真的非常重要。在外贸领域&#xff0c;如今各平台竞争激烈&#xff0c;规则多&#xff0c;成本高&#xff0c;价格战、政策变化快&#xff0c;还存在封店风险等等因素。在这种情况下&#xff0c;拥有外贸独立站就能很好规避上…