OpenCV InputArray和OutputArray

2023-11-13



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.     forint i = 0; i < src.rows; i++ )  
  9.         forint j = 0; j < src.cols; j++ )  
  10.         {  
  11.             Point2f pt = src.at<Point2f>(i, j);  
  12.             dst.at<Point2f>(i, j) = Point2f(m.at<float>(0, 0) * pt.x +  m.at<float>(0, 1) *   pt.y + m.at<float>(0, 2);  
  13.         }  
  14. }  
void myAffineTransform(InputArray _src, OutputArray _dst, InputArray _m)
{

	Mat src = _src.getMat(), m = _m.getMat();
	CV_Assert( src.type() == CV_32FC2 && m.type() == CV_32F && m.size() == Size(3, 2) );
	_dst.create(src.size(), src.type());
	Mat dst = _dst.getMat();
	for( int i = 0; i < src.rows; i++ )
		for( int j = 0; j < src.cols; j++ )
		{
			Point2f pt = src.at<Point2f>(i, j);
			dst.at<Point2f>(i, j) = Point2f(m.at<float>(0, 0) * pt.x +	m.at<float>(0, 1) *	pt.y + m.at<float>(0, 2);
		}
}

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV InputArray和OutputArray 的相关文章

  • java.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java2411

    我正在尝试将 opencv 添加到我的 Spring Boot Maven 项目中 为了使用 opencv 库 我必须在 java library path 中提供本机库 我已将以下命令添加到 Eclipse VM 参数中 Djava li
  • 旋转矩阵openCV

    我想知道如何找到框架中一组特征的旋转矩阵 我会更具体 我有 2 个具有 20 个特征的帧 假设第 1 帧和第 2 帧 我可以估计两个帧中特征的位置 例如 假设位置 x y 处的某个第 1 帧特征 并且我确切地知道它在哪里 所以假设为 x y
  • 如何在python 3.8中安装opencv-python

    我在 pycharm 中安装 opencv python 时遇到问题 打开 pycharm 后 我单击 设置 然后单击 项目解释器 单击 并搜索正确的模块 我开始安装 但失败了 Could not find a version that s
  • C++ OpenCV 3.4 / FFMPEG 3.4.1 VideoWriter 和 MP4 输出文件格式

    我正在运行 Linux 内核 4 9 35 ti r44 的 ARM BeagleBone X 15 Debian 机器 在我的 C Qt 5 应用程序中 我想将 cv Mat 帧保存为 MP4 格式视频 我安装了 libx264 并从头开
  • OpenCV Sobel 滤波器 - 为什么它看起来这么糟糕,尤其是与 Gimp 相比?

    我正在尝试使用 OpenCV 重建一些我之前在 Gimp 中完成的预处理 第一级是用于边缘检测的 Sobel 滤波器 它在 Gimp 中运行得很好 现在这是我对 OpenCV 的尝试 opencv imgproc Sobel src sca
  • 将 CvSeq 保存到数组

    我对 OpenCV 文档有点迷失 我想将 cvFindContours 返回的 CvSeq 保存到一个数组中 据我了解它将返回 CvContour 的 seq 但我找不到它包含的内容 我应该保存其中的哪些部分 稍后我可以迭代它并说调用 cv
  • 使用 Racket FFI 进行快速阵列访问

    我正在尝试在 Racket 中编写 OpenCV FFI 并达到了需要有效操作数组的地步 然而 我所有使用 Racket FFI 访问数组的尝试都会导致代码效率非常低 有没有办法使用 FFI 快速访问 C 数组 在 Racket 中 这种类
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • OpenCV 2.4.3rc 和 CUDA 4.2:“OpenCV 错误:没有 GPU 支持”

    我在这张专辑中上传了几张截图 https i stack imgur com TELST jpg https i stack imgur com TELST jpg 我正在尝试在 Visual Studio 2008 中的 OpenCV 中
  • opencv:如何将所有黑色像素转换为透明并将其保存到png文件

    如下图 我希望所有黑色像素都是透明的并将其保存为 png 文件 您可以像这样快速完成并矢量化 import cv2 import numpy as np Load image as Numpy array in BGR order na c
  • 使用 Xcode 为 OS X Lion / Mountain Lion 编译 OpenCV (2.3.1+)

    谁能给我提供一些如何使用 Xcode 在 OS X Lion 上编译 OpenCV 2 3 1 的详细指南 我对此很生气 我得到了源代码 使用 cmake 创建 Xcode 模板并尝试构建它 但它失败并出现大约 200 个错误 提前致谢 多
  • 变形:Opencv 使用 Visual Studio 将图像显示到曲面屏幕

    我正在尝试使用 opencv API 来扭曲图像 以便将其显示到曲面屏幕上 我已经浏览了opencv中提供的翘曲apihere http docs opencv org 2 4 modules stitching doc warpers h
  • OpenCV:处理每一帧

    我想使用 OpenCV 编写一个跨平台应用程序进行视频捕获 在所有示例中 我发现来自相机的帧是使用抓取功能进行处理并等待一段时间 我想处理序列中的每一帧 我想定义自己的回调函数 每次当一个新帧准备好处理时都会执行该函数 例如直播对于 Win
  • 将 RGB 转换为黑色或白色

    我如何在Python中获取RGB图像并将其转换为黑白图像 不是灰度 我希望每个像素要么是全黑 0 0 0 要么是全白 255 255 255 流行的 Python 图像处理库中是否有任何内置功能可以完成此任务 如果不是 最好的方法是循环遍历
  • 如何在没有 OpenCv Manager 的情况下运行 OpenCV 代码

    我正在使用 OpenCV4Android 版本 2 4 10 并在 Samsung Galayx GT I9300 上测试我的代码 我遇到的问题是 我必须从 Play 商店下载 Opencv Manager 以便我的 opencv 代码运行
  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8
  • 使用 K 均值聚类 OpenCV 进行交通标志分割

    I used K Means Clustering to perform segmentation on this traffic sign as shown below 这些是我的代码 读取图像并模糊 img cv imread 000
  • 使用 Unity3D 解决 PnP

    我有一个真实 物理的棍子 上面连接有红外摄像头和一些红外 LED 它们形成了我正在使用的模式 以便使虚拟棍子以与物理棍子相同的方式移动 为此 我在 Python 中使用 OpenCV 并将由solvePnP 计算的旋转和平移向量发送到 Un
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http

随机推荐

  • 中国银行业发展前景预测与未来战略规划建议报告2022-2028年版

    中国银行业发展前景预测与未来战略规划建议报告2022 2028年版 报告目录 第一章 2020 2022年国际银行业分析 1 1 2020 2022年全球银行业运行状况分析 1 1 1 全球宏观经济 1 1 2 金融市场波动 1 1 3 行
  • vue监听watch使用

    watch监听一定要监听 属性值 也就是data值 案例 data return language methods handleSetLanguage lang this i18n locale lang this language lan
  • cJSON介绍及使用

    JSON JavaScript Object Notation 是一种轻量级的文本数据交换格式 易于让人阅读 同时也易于机器解析和生成 尽管JSON是Javascript的一个子集 但JSON是独立于语言的文本格式 并且采用了类似于C语言家
  • 面向对象&类和对象

    一 面向对象的概念 概念 面向对象是基于万物皆对象这个哲学观点 在Python中 一切皆对象 说明 案例 我想要吃大盘鸡 面向过程 面向对象 1 自己去买菜 1 委托一个会砍价的人帮忙去买菜 2 自己择菜 2 委托一个临时工帮忙择菜 3 自
  • 认知与思考-190820

    首先我觉得人应该读自己能驾驭的书 或者说自己的人格坚固 道家讲道心 佛家讲慧根 其实就是自己的本心不为所动 如果能 读各种书只会增加你处事能力和分辨万物的能力 你是主体 知识只是你解决方式的手段 向阳而生 你要知道 世间万物本就存在 你读不
  • 【第60篇】多目标跟踪:文献综述

    文章目录 摘要 1 简介 1 1 与其他相关综述的区别 1 2 贡献 1 3 综述的结构 1 4 外延 2 MOT问题 2 1 问题公式化 2 2 MOT的分类 2 2 1 初始化方法 2 2 2 处理方式 2 2 3 输出类型 2 2 4
  • 3 Decomposition Methods

    分解方法是解决问题的一般方法 其将问题分解为更小的问题并且并行地或者顺序地解决每个更小的问题 当采用顺序的方式时 优点是问题的复杂性呈超线性增长 more than linearly 如果问题在单步操作中分解有效 那么我称该问题为 块 可分
  • 数据分析36计(20):优化新财年广告预算,乘法营销组合模型的Python实现

    目录 文末附数据和代码 1 简介 如果你有做过FB广告投放 对 ROI 和 ROAS 这两个词一定不陌生 因为招聘的时候肯定会问你两个问题 你接触过多大的盘子 即花过多少预算 你的ROI一般是多少 广告客户使用营销组合模型 MMM 来衡量其
  • 运算放大器---增益带宽积(GBW)

    增益带宽积 GBW 电压反馈型运算放大器的增益带宽决定了其在某项应用中的有效带宽 将增益带宽除以应用中的实际闭环增益 便可大致估算出最大可用带宽 对于电压反馈放大器 增益带宽积 GBW 是衡定的常数 很多的应用都得益于所选择的更大带宽 转换
  • 电路板上为何要有孔洞?何谓PTH/NPTH/vias(导通孔)

    http www greattong com archives view 443 1 html 电路板上为何要有孔洞 何谓PTH NPTH vias 导通孔 发布时间 2016 07 13 09 39 阅读 3613 来源 技术文章 责任编
  • Vim插件合集 (打造你的专属炫酷IDE)

    Vim插件合集 本篇 主要来介绍一下 如何使用 Vim的插件功能 去把Vim打造成 炫酷 多功能的IDE 让你可以用Vim编写Python Go 等等 而不用繁重的 Pycharm 等高级Ide 效果图 前置知识 vim映射 就是映射你自己
  • 阿里全球数学竞赛最强10人名单出炉:仅1人来自北大,但北大是最大赢家

    鱼羊 杨净 发自 凹非寺量子位 报道 公众号 QbitAI 又一次的全球数学狂欢 落下帷幕 经过4个月的赛程 第三届阿里巴巴全球数学竞赛结果新鲜出炉 52850名参赛选手中 最终有70人获奖 99 9 的人无缘奖牌 北大成最大赢家 不仅有2
  • react 中使用递归和 TS 泛型来处理树形数据

    解决场景 使用递归把树形数据中的 children 替换成 children undefind page1 ts import formatTree from formatData ts const treeLists name paren
  • 线性稳压电路

    如图为串联式稳压电路 之所以叫串联式是因为T管与负载RL串联 工作原理 1 稳压管 Dz 与限流电阻R串联 得到基准电压 2 与组成反馈网络 得到反馈电压 3 净输入量的变化 引起的变化 4 的变化使调整管T的c e 极间的电压降变化 从而
  • Linux文件目录类(常用指令)

    文件目录类 cd指令 基本语法 cd 参数 功能描述 切换到指定目录 cd 或者cd 回到自己的家目录 cd 回到当前目录的上一目录 绝对路径和相对路径 绝对路径 目标文件在硬盘上的真实路径 最精确路径 从根目录开始的 相对路径 相对于当前
  • 将程序打成jar包后运行mapReduce时出现File does not exit: hdfs://localhost....jar

    出现的问题 解决方法 直接向报错路径添加报错提示的文件
  • Installation failed with message Invalid File:

    最近在studio 在安装apk的时候遇到了这么个问题 他说我之前已经有安装版本了 但是这个apk却是我第一次安装 怎么回事 之前遇到过一次 自己不知道怎么解决了 当时忘记记录下来现在记录下来 给自己和后面遇到的朋友 提供一个快速的解决办法
  • 圣路易斯大学计算机科学,圣路易斯华盛顿大学计算机科学专业

    圣路易斯华盛顿大学计算机科学与工程系申请要求需要托福 接受雅思 需要GRE GPA 3 0 学费 47 300 年 春季 秋季入学 截止日 1月15日 PhD 3月1日 MS M Eng 圣路易斯华盛顿大学计算机科学与工程系课程 网络物理系
  • 说说你对Vue生命周期的理解?

    一 生命周期是什么 生命周期 Life Cycle 的概念应用很广泛 特别是在政治 经济 环境 技术 社会等诸多领域经常出现 其基本涵义可以通俗地理解为 从摇篮到坟墓 Cradle to Grave 的整个过程 在Vue中实例从创建到销毁的
  • OpenCV InputArray和OutputArray

    InputArray这个接口类可以是Mat Mat