OpenCV中的MatLab最小等效值

bnlyeluc  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(165)

我正在寻找OpenCV中的MatLab的min函数的等价物,具有以下特定功能(取自the official Matlab documentation):
[M,i]=min(_)查找A的最小值的索引,并使用前面语法中的任何输入参数在输出向量i中返回它们。如果最小值出现多次,则MIN返回与第一次出现的索引对应的索引。
在我的具体案例中,我有两张图片。我想创建一个新的图像与每个像素的最小值(WRT这2个图像),我需要存储一个Map(即一个Mat对象或类似的东西与类似的大小),其中Map的每个像素告诉我是从他的第一个或第二个图像的最小值(你可以认为他们是nm2图像,我想要采取的最小值通道的方式,并希望能够告诉我从哪个通道我得到了这个值)。
在OpenCV中有什么简单的方法可以做到这一点吗?
顺便说一句,它是针对Android应用程序的,所以Java Answers比C++更受欢迎。谢谢。
编辑:我可以想出一些循环解决方案,但我需要我的解决方案尽可能高效,所以我想看看是否有一些内置的函数

EDIT2-我没有寻找获得整个矩阵的最小/最大绝对值的解决方案-我希望它是以像素为单位的,包括一个Map,它告诉我从哪个图像中选择了该值。例如:

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
ilmyapht

ilmyapht1#

编辑:我最初的回答毫无用处
怎么样

MatExpr min(const Mat& a, const Mat& b)

this开机自检。如果从原始图像ABC=min(A,B)开始,则可以定义D=A-C。如果是D(i,j)==0,则该值来自A。如果是D(i,j)>0,则像素值来自B
如果AB保存浮点数,而不是整型,那么您当然必须使用一些小的容差来进行比较。

相关问题