opencv - 如何返回与比较矩阵相同类型的比较矩阵
Posted
技术标签:
【中文标题】opencv - 如何返回与比较矩阵相同类型的比较矩阵【英文标题】:opencv - how to return comparison matrix with same type as compared matrices 【发布时间】:2015-05-18 12:51:16 【问题描述】:cv::compare 上的 openCV 文档指出,输出数组(函数描述中的 dst)与被比较的 2 个输入数组的大小和类型相同。 这不是我所看到的,因为它总是返回一个 UINT8 矩阵,其中“255”作为逻辑 1,“0”作为逻辑 0。 我们以 CV_32FC1 类型的 2 个矩阵为例,它们具有相同的数据并运行以下代码:
cv::compare(I, J, dst, cv::CMP_EQ);
结果是一个充满“255”的 UINT8 矩阵。
-
为什么这与描述不同?
是否可以返回一个逻辑矩阵,“1”代表逻辑 1,“0”代表逻辑 0,并且与输入矩阵类型相同(在输出矩阵上不使用 convertTo,然后除以 255)?李>
如果我们讨论的是 oclMat 矩阵,问题 1-2 的答案有何变化?
【问题讨论】:
【参考方案1】:如果你往下看,它和解释没有什么不同
当比较结果为真时,输出数组的对应元素设置为255。
看看你应该能够对数组进行缩放或布尔乘法的矩阵表达式。Expressions
编辑:https://github.com/Itseez/opencv/commit/a7160d9b128fed82e4eea728ceb95eab1b085f00 无法更改它,它按照本文档更新的预期工作。
【讨论】:
它在 Mat type 上确实不同 - 无论输入矩阵是什么,它都会返回一个 UINT8 Mat,这需要一个额外的步骤来转换逻辑矩阵以便将其相乘使用其中一个输入矩阵(我想做的一件常见事情是为了将输入矩阵中不符合比较条件的所有元素归零)。 你是对的,不幸的是我没有适合你的解决方案,因为事实证明文档已经过时了,请在此处查看此提交 github.com/Itseez/opencv/commit/…,它表示它正在按书面方式工作。以上是关于opencv - 如何返回与比较矩阵相同类型的比较矩阵的主要内容,如果未能解决你的问题,请参考以下文章
(转载)利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较) 置顶