我正在寻找OpenCV中Matlab的min
函数的等价物,具有此特定功能(取自the official Matlab documentation):
[M,I] = min(___)找到索引 A的最小值和返回值 它们在输出向量I中,使用任何一个 前面的输入参数 语法。如果出现最小值 不止一次,然后min返回 索引对应第一个 发生。
在我的具体情况下,我有2张图片。我想用每个像素的最小值(这两个图像)创建一个新图像,我需要存储一个地图(即Mat
对象或类似大小的类似物),其中每个像素都是map告诉我最小值是从第一个图像还是第二个图像中获取的
(您可以将它们视为n * m * 2图像,我想在通道中采用最小值,并且希望能够告诉我从哪个通道获得此值。)
在OpenCV中有一种简单的方法吗?
不过,它适用于Android应用程序,所以Java答案比C ++更受欢迎。感谢。编辑:我可以想到一些循环解决方案,但我需要我的解决方案尽可能高效,所以我想看看是否有一些内置函数
EDIT2 - 我没有找到一个解决方案,我得到了整个矩阵的绝对最小值/最大值 - 我希望它按像素方式,包括地图它告诉我从哪个图像中选择了值。例如:
A = [1 2 ;
3 4 ]
B = [5 6 ;
1 2 ]
-->
min(A,B) = [1 2 ;
1 2 ]
// these are the actual values ^
minInd(A,B) = [1 1 ;
2 2 ]
// these are the indices ^ where 1 means it was taken from A, and 2 means it was taken from B
答案 0 :(得分:1)
怎么样
MatExpr min(const Mat& a, const Mat& b)
来自this帖子。如果您从原始图片A
和B
以及C=min(A,B)
开始,那么您可以定义D=A-C
。如果D(i,j)==0
,则该值来自A
。如果D(i,j)>0
,则像素值来自B
。
如果A
和B
保持浮动而不是整数,那么你当然必须用一些小容差进行比较。