OpenCV教程——Mat对象

news2024/11/24 3:27:31

1.Mat对象和IplIamge对象

  • Mat对象是OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分为两个部分:头部数据部分
  • IplIamge是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存、对大的程序使用它容易导致内存泄漏问题。

2.Mat对象构造函数

Mat对象有以下6种构建方法:

  1. Mat(int rows,int cols,int type)(常用)
  2. Mat(Size size,int type)(常用)
  3. Mat(int rows,int cols,int type,const Scalar &s)
  4. Mat(Size size,int type,const Scalar &s)
  5. Mat(int ndims,const int* sizes,int type)
  6. Mat(int ndims,const int* sizes,int type,const Scalar &s)

2.1.图像的其他构造方法

方法一:

img.create(size,type),但是.create不能赋值,赋值需要用img=Scalar(0,0,0)

方法二:

Mat::eye(3,3,type)构造一个3行3列(即3*3)的图像,并且对角线上每个像素点的第一个通道赋值为1,其余均为0,对如上语句,如果type为3通道图像的话,得到的图像数组矩阵见下:

类似的还有:

  • Mat::ones():每个像素的第一个通道为1,其余通道为0。
  • Mat::zeros():每个像素的每个通道都为0。

3.部分复制和完全复制

👉部分复制:一般情况下只会复制Mat对象的头和指针部分,不会复制数据部分。

👉完全复制:把Mat对象的头部和数据部分一起复制。

 
1
2
3
4
5
Mat A=imread(imgFilePath);
Mat B(A);//部分复制
Mat F=A.clone();//完全复制
Mat G;
A.copyTo(G);//完全复制

(部分复制:共用一个矩阵,即一张图,该图如果发生改变,A和B都将改变。而完全复制是各自用各自的数据部分,互不干扰。)

3.1.copyTo()

copyTo()有三种声明方式:

 
1
2
3
4
5
6
//1
Mat clone() const CV_NODISCARD;
//2
void copyTo( OutputArray m ) const;
//3
void copyTo( OutputArray m, InputArray mask ) const;

其中第三种方式还可用于图像融合,mask的尺寸必须和原图像相同,它的非零元素表示需要复制的矩阵元素,mask必须是CV_8U类型的,可以有1个或多个通道。例如:

 
1
src.copyTo(dst,mask);

如果mask在像素点(i,j)

的像素值不为0,则把src在像素点(i,j)的像素值直接赋给dst的(i,j)处;如果mask在像素点(i,j)的像素值为0,则dst保留其在(i,j)处的像素值。

 

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

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

相关文章

笔记本电脑没有声音怎么办?5个必会方法分享

案例:笔记本电脑没有声音怎么办? 【我的笔记本电脑为什么会没有声音呢?看视频听音乐一点声音都没有,实在太烦人了!应该怎么解决呢?】 笔记本电脑逐渐成为人们工作生活必备的工具。如果笔记本电脑没有声音…

怎样检测和维护LED显示屏系统

检测和维护LED显示屏系统是确保其正常运行和延长寿命的重要步骤。以下是一些常见的检测和维护LED显示屏系统的方法: 视觉检查:定期进行视觉检查以确保LED显示屏没有明显的损坏或故障。检查显示屏表面是否有损坏、裂纹或漏光等情况。如果发现任何问题&…

ChatGPT作者John Schulman:通往TruthGPT之路

OneFlow编译 翻译|贾川、徐佳渝、杨婷 大型语言模型(LLM)有一个众所周知的“硬伤”——它们经常会一本正经编造貌似真实的内容。 OpenAI团队希望通过改进强化学习反馈步骤“原生地”阻止神经网络产生幻觉,OpenAI首席科学家Ilya …

spark-sql 报错:Exception thrown flushing changes to datastore

报错背景 hive创建数据库时添加中文备注信息报错。 命令:CREATE DATABASE IF NOT EXISTS hive_ods_db COMMENT Hive ODS层数据库; 报错现象 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Excep…

递归行为与归并排序

master公式 T(N)a*T(N/b)O(N^d) T(N):问题的规模是N个数据 N/b:子过程的规模 a:调用的次数 O(N^d) :除子问题的调用之外,剩余的代码的时间复杂度 使用条件:满足子问题等规模的递归 arr[L,R]范围…

49天精通Java,第27天,队列、双端队列、优先队列

目录 一、队列与双端队列二、Queue和Deque三、api对比1、add和offer区别2、remove和poll3、element和peek 四、优先队列1、PriorityQueue常用方法2、ArrayDeque常用方法 大家好,我是哪吒。 一、队列与双端队列 双端队列是一种特殊的队列,它的两端都可以…

吴军《计算之魂》读后感

前言 断断续续,终于完成了这本书的第一次通读,记录下自己的一些想法。 先说一个小故事。前段时间家里买了一个小鱼缸,问我有没有办法让水自动循环,但不想用电。没有好的想法,去小某书上搜了下,好多案例教…

【哈士奇赠书活动 - 18期】-〖Flask Web全栈开发实战〗

文章目录 ⭐️ 赠书活动 - 《Flask Web全栈开发实战》⭐️ 编辑推荐⭐️ 内容提要⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书活动 - 《Flask Web全栈开发实战》 内容简介: 《Flask Web全栈开发实战》围绕 Flask 框架,详细地讲解了使用 Flask 开发网站的各项技…

vue2项目中使用本机图片的一些问题

前后端分离项目,(vue2springboot2.6.3) 前端上传图片,后端将图片保存在本地。当前端使用上传的图片时出现的一些问题说明。 前端上传图片文件,后端接收到图片文件后将图片保存到vue项目的src/assets/club目录下,如下…

VMware vSphere Replication 8.7 (for vSphere 8.0U1) - 虚拟机复制和数据保护

请访问原文链接:https://sysin.org/blog/vmware-vsphere-replication-8/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 新增功能 vSphere Replication 8.7 | 2023 年 4 月 18 日 | 内部版本 21591677 vSphere Re…

GPT4.0+Midjourney=最佳组合,简单玩法

以下是我设计的一个简单的组合玩法,操作如下: 问gpt4: Here is a MidJourney Prompt Formula: A detailed image of [Subject] [doing something interesting] during [time of day], taken with a [type of camera], using [type of lens] with cinema…

ChatGPT会对我们日常生活带来什么影响?这些技术会改变我们学习阅读工作方式吗?

ChatGPT会对我们日常生活带来什么影响?这些技术会改变我们学习阅读工作方式吗? AI 这个话题很火,我也一直在关注着,很多人甚至觉得 AI 会改变世界,也许你会好奇:ChatGPT 会在三年内终结编程吗?A…

基于gitlab搭建Drone CI

drone简介: drone官方文档:https://docs.drone.io/ drone跟Jenkins一样,可实现持续集成,就是可以帮助我们解决重复的代码构建,自动化测试,发布等重复劳动,通过简单一个提交代码的动作&#xff…

Text-to-3D 任务论文笔记: Latent NeRF

文章目录 概述相关工作3D形状合成使用2D监督的text-to-3D 任务 方法前置知识LDMScore Distillation Latent NeRF文本引导RGB refinementSketch-Shape Guidance对于显式形状的Latent-Paint 实验实验细节文本引导的生成RGB RefinementTextual-Inversion Sketch-Shape GuidanceLat…

使用Handler创建一个Android秒表应用

0、应用是一个有活动、布局和其他资源组成的集合。其中一个活动是应用的主活动。每个应用都有一个主活动,在文件AndroidManifest.xml中指定。 1、默认地,每个应用都在自己的进程中运行。这样有助于保证应用安全。 2、但是可以使用startActivity(intent)传…

信息安全支撑技术

信息安全支撑技术 密码学密码学发展古典密码近代密码学现代密码学 基本保密通信模型密码系统的安全性密码学技术在信息安全中的应用对称密码算法非对称密码算法其他密码服务哈希函数消息认证码数字签名 公钥基础设施(PKI)CA:认证权威RA&#…

九耶丨阁瑞钛伦特-SpringCloud(六)

Spring Cloud Config 是一个基于 Spring Boot 实现的分布式配置管理工具,它专注于管理各种环境中的应用程序配置,例如开发环境、测试环境和生产环境等。它提供了一个集中的配置服务器,允许在运行时动态地管理和更新应用程序的配置信息&#x…

10 个超赞的 C 语言开源项目

今天给大家分享10个超赞的C语言开源项目,希望这些内容能对大家有所帮助! 01 Webbench Webbench是一个在 Linux 下使用的非常简单的网站压测工具。 它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能。 最多可以…

Unity版本使用情况统计(更新至2023年4月)

本期UWA发布的内容是第十二期Unity版本使用统计,统计周期为2022年11月至2023年4月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势,了解近半年来哪些Unity版本的使用概率更…

Java经典笔试题—day05

Java经典笔试题—day05 🔎选择题🔎编程题🥝统计回文🥝连续子数组最大和 🔎结尾 🔎选择题 (1)下面的程序 编译运行后,在屏幕上显示的结果是() public class Test {publi…