热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

InputArray和OutputArray

转自http:blog.csdn.netyang_xian521articledetails7755101看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是I

转自http://blog.csdn.net/yang_xian521/article/details/7755101

 

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

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

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

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

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

 

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


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

 

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

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

转:https://www.cnblogs.com/fdd566/p/6545288.html



推荐阅读
author-avatar
mm2525888
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有