[Opencv源码阅读]InputArray和OutputArray

本文详细介绍了OpenCV中的InputArray和OutputArray类,它们作为数据输入和输出的代理类型。InputArray用于接收不可变的输入参数,如Mat和Vector<>,而OutputArray则允许修改参数内容。文章探讨了它们的构造函数,特别是如何通过flags标记数据类型,并提供了数据转换的方法,如getMat(),用于将不同类型的数据转换为Mat。此外,还讲解了类型标记和数据转换的相关枚举常量及其用途。
摘要由CSDN通过智能技术生成

概述

InputArray和OutputArray两个类都是代理数据类型,用来接收Mat和Vector<>作为输入参数,OutputArray继承自InputArray。

InputArray作为输入参数的时候,传入的参数加了const限定符,即它只接收参数作为纯输入参数,无法更改输入参数的内容。而OutputArray则没有加入限定符,可以对参数的内容进行更改。

 

InputArray使用一系列的数据类型作为输入实例化自身,通过设定一系列的构造函数来实现。

_InputArray::_InputArray(constMat&m) : flags(MAT),obj((void*)&m) {}

_InputArray::_InputArray(constvector<Mat>&vec) : flags(STD_VECTOR_MAT),obj((void*)&vec) {}

_InputArray::_InputArray(constdouble&val) : flags(FIXED_TYPE +FIXED_SIZE + MATX +CV_64F), obj((void*)&val),sz(Size(1,1)) {}

.....

 

可以看到在构造的时候,同时指定了flags和obj,flags用于表明当前存储的数据类型,而obj存储的则是数据的内存地址。

 

除了这些基本的构造函数外,还有其他支持泛型的构造函数,如下

/// Input/Output Arrays /

 

template<typename_Tp>inline_InputArray::_InputArray(constvector<_Tp>&vec)

: flags(FIXED_TYPE +STD_VECTOR + DataType<_Tp>::type),obj((void*)&vec) {}

 

template<typename

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值