c++ - 如何从OpenCV中的n维数组中获取最大值

标签 c++ opencv multidimensional-array max

我试图从 3-d Mat 中获取最大值,但 minmaxIdx 和 mixmaxloc 都未能做到这一点。

int sz[] = {BIN, BIN, BIN};
Mat accumarray(3, sz, CV_8U, Scalar::all(0)) ;
double testMaxval = 0;
int minIdx = accumarray.dims ;
minMaxIdx(accumarray, NULL, &testMaxval,NULL,minIdx ,NULL) ;
cout<<testMaxval<<endl ;

这段代码行不通,那么我可以使用 max()、minmaxidx() 或 minmaxloc() 来有效地获取最大值,而无需手动处理整个 n 维数组吗?

最佳答案

以下代码适用于 OpenCV 2.3.1:

int sz[] = {3, 3, 3};
Mat accumarray(3, sz, CV_8U, Scalar::all(0));
accumarray.at<uchar>(0, 1, 2) = 20;
double testMaxval;
int maxIdx[3];
minMaxIdx(accumarray, 0, &testMaxval, 0, maxIdx);
cout << testMaxval << endl ;
cout << maxIdx[0] << ", " << maxIdx[1] << ", " << maxIdx[2] << endl;

关于c++ - 如何从OpenCV中的n维数组中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253589/

相关文章:

c++ - 需要 Union hack

c++ - C2065 将定义分配给 int 时未声明的标识符

c++ - Xlib。检查窗口是否重叠

python - python:pip install opencv-python给我错误

python - 在opencv numpy中找到轮廓的边界点

c++ - C 程序获得不同的输出?这个程序应该输出什么?

python - 简单的 Python 模糊卷积核函数生成奇怪的图像

c++ - 将二维数组作为参数传递给函数

java - 转置二维数组仅适用于矩形数组 - Java

c++ - arr [0] [2]的传递地址,必须在双指针中接收