博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV中InputArray和OutputArray使用方法
阅读量:5244 次
发布时间:2019-06-14

本文共 1643 字,大约阅读时间需要 5 分钟。

原文链接:http://blog.csdn.net/yang_xian521/article/details/7755101

看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray型的,这个接口类还是很强大的,今个就来说说它们的那些事。

InputArray这个接口类可以是Mat、Mat_<T>、Mat_<T, m, n>、vector<T>、vector<vector<T>>、vector<Mat>。也就意味着当你看refman或者源代码时,如果看见函数的参数类型是InputArray型时,把上诉几种类型作为参数都是可以的。

有时候InputArray输入的矩阵是个空参数,你只需要用cv::noArray()作为参数即可,或者很多代码里都用cv::Mat()作为空参。

这个类只能作为函数的形参参数使用,不要试图声明一个InputArray类型的变量

如果在你自己编写的函数中形参也想用InputArray,可以传递多类型的参数,在函数的内部可以使用_InputArray::getMat()函数将传入的参数转换为Mat的结构,方便你函数内的操作;必要的时候,可能还需要_InputArray::kind()用来区分Mat结构或者vector<>结构,但通常是不需要的。例如:

1 void myAffineTransform(InputArray _src, OutputArray _dst, InputArray _m)   2 {   3    4     Mat src = _src.getMat(), m = _m.getMat();   5     CV_Assert( src.type() == CV_32FC2 && m.type() == CV_32F && m.size() == Size(3, 2) );   6     _dst.create(src.size(), src.type());   7     Mat dst = _dst.getMat();   8     for( int i = 0; i < src.rows; i++ )   9         for( int j = 0; j < src.cols; j++ )  10         {  11             Point2f pt = src.at
(i, j); 12 dst.at
(i, j) = Point2f(m.at
(0, 0) * pt.x + m.at
(0, 1) * pt.y + m.at
(0, 2); 13 } 14 }

至于有的源代码里使用InputArrayOfArrays作为形参,不用慌张,其实它和InputArray是一样一样一样的。

 OutputArray是InputArray的派生类。使用时需要注意的问题和InputArray一样。和InputArray不同的是,需要注意在使用_OutputArray::getMat()之前一定要调用_OutputArray::create()为矩阵分配空间。可以用_OutputArray::needed()来检测输出的矩阵是否需要被计算。有时候传进去的参不是空就不需要计算

还有就是OutputArrayOfArrays、InputOutputArray、InputOutputArrayOfArrays都是OutputArray的别名而已

 

转载于:https://www.cnblogs.com/freshmen/p/4534966.html

你可能感兴趣的文章
【iOS】build diff: /../Podfile.lock: No such file or directory
查看>>
【Android Studio】使用 Genymotion 调试出现错误 INSTALL_FAILED_CPU_ABI_INCOMPATI
查看>>
FancyCoverFlow
查看>>
教你一分钟实现动态模糊效果
查看>>
C++中explicit的用法
查看>>
java 企业站源码 兼容手机平板PC 响应式 主流SSM框架 freemaker 静态引擎
查看>>
AliOS编译安装MyRocks
查看>>
JS博客
查看>>
Docx转Doc操作(c#)
查看>>
Docker——error pulling image configuration
查看>>
一条简单的 SQL 执行超过 1000ms,纳尼?
查看>>
Python函数(一)之杵臼之交
查看>>
关于将qt作为max插件ui库所遇到的困难
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
SendMail与Postfix的架构备忘
查看>>
paip.mysql 性能测试 报告 home right
查看>>
Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216 java c# php js.docx...
查看>>
283. Move Zeroes把零放在最后面
查看>>
我的函数说明风格
查看>>