关于cv::compare的openCV文档声明输出数组(函数描述中的dst)与正在比较的两个输入数组的大小和类型相同。这不是我所看到的,因为它总是返回一个UINT8矩阵,'255'作为逻辑1,'0'为逻辑0。例如,两个类型为CV_32FC1的矩阵具有相同的数据,并运行以下代码:
cv::compare(I, J, dst, cv::CMP_EQ);
结果是一个充满'255'的UINT8矩阵。
- 为什么这与描述不同?
- 是否有可能返回一个逻辑矩阵,逻辑1为'1',逻辑0为'0',与输入矩阵的类型相同(不使用输出矩阵上的convertTo,然后除以255)?
- 如果我们讨论oclMat矩阵,问题1-2的答案如何变化?
这和下面的解释是一样的
当比较结果为true时,输出数组对应的元素被设置为255。
看一下矩阵表达式,你应该能够在数组上缩放或执行布尔乘法。表达式
编辑:https://github.com/Itseez/opencv/commit/a7160d9b128fed82e4eea728ceb95eab1b085f00没有办法改变这一点,它是按照本文档更新的预期工作