Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How to get the values of the local maxima in an image

I wrote the below code to know how can i get the local and global maximum and minimum, but i do not know how to get the local maxima?

also as you see in the code below, I am using mask, but at run time i receieve the below mentioned error message. so please let me know why do we need mask and how to use it properly.

update:

Line 32 is: MinMaxLocResult s = Core.minMaxLoc(gsMat, mask);

code:

public static void main(String[] args) {
    MatFactory matFactory = new MatFactory();
    FilePathUtils.addInputPath(path_Obj);
    Mat bgrMat = matFactory.newMat(FilePathUtils.getInputFileFullPathList().get(0));

    Mat gsMat = SysUtils.rgbToGrayScaleMat(bgrMat);
    Log.D(TAG, "main", "gsMat.dump(): \n" + gsMat.dump());

    Mat mask = new Mat(new Size(3,3), CvType.CV_8U);//which type i should set for the mask

    MinMaxLocResult s = Core.minMaxLoc(gsMat, mask);
    Log.D(TAG, "main", "s.maxVal: " + s.maxVal);//to get the global maximum
    Log.D(TAG, "main", "s.minVal: " + s.minVal);//to get the global minimum
    Log.D(TAG, "main", "s.maxLoc: " + s.maxLoc);//to get the coordinates of the global maximum
    Log.D(TAG, "main", "s.minLoc: " + s.minLoc);//to get the coordinates of the global minimum
}

error message:

OpenCV Error: Assertion failed (A.size == arrays[i0]->size) in cv::NAryMatIterator::init, file ..\..\..\..\opencv\modules\core\src\matrix.cpp, line 3197
Exception in thread "main" CvException [org.opencv.core.CvException: ..\..\..\..\opencv\modules\core\src\matrix.cpp:3197: error: (-215) A.size == arrays[i0]->size in function cv::NAryMatIterator::init
]
at org.opencv.core.Core.n_minMaxLocManual(Native Method)
at org.opencv.core.Core.minMaxLoc(Core.java:7919)
at com.example.globallocalmaxima_00.MainClass.main(MainClass.java:32)

How to get the values of the local maxima in an image

I wrote the below code to know how can i get the local and global maximum and minimum, but i do not know how to get the local maxima?

also as you see in the code below, I am using mask, but at run time i receieve the below mentioned error message. so please let me know why do we need mask and how to use it properly.

update:

Line 32 is: MinMaxLocResult s = Core.minMaxLoc(gsMat, mask);

code:

public static void main(String[] args) {
    MatFactory matFactory = new MatFactory();
    FilePathUtils.addInputPath(path_Obj);
    Mat bgrMat = matFactory.newMat(FilePathUtils.getInputFileFullPathList().get(0));

    Mat gsMat = SysUtils.rgbToGrayScaleMat(bgrMat);
    Log.D(TAG, "main", "gsMat.dump(): \n" + gsMat.dump());

    Mat mask = new Mat(new Size(3,3), CvType.CV_8U);//which type i should set for the mask

    MinMaxLocResult s = Core.minMaxLoc(gsMat, mask);
    Log.D(TAG, "main", "s.maxVal: " + s.maxVal);//to get the global maximum
    Log.D(TAG, "main", "s.minVal: " + s.minVal);//to get the global minimum
    Log.D(TAG, "main", "s.maxLoc: " + s.maxLoc);//to get the coordinates of the global maximum
    Log.D(TAG, "main", "s.minLoc: " + s.minLoc);//to get the coordinates of the global minimum
}

error message:

OpenCV Error: Assertion failed (A.size == arrays[i0]->size) in cv::NAryMatIterator::init, file ..\..\..\..\opencv\modules\core\src\matrix.cpp, line 3197
Exception in thread "main" CvException [org.opencv.core.CvException: ..\..\..\..\opencv\modules\core\src\matrix.cpp:3197: error: (-215) A.size == arrays[i0]->size in function cv::NAryMatIterator::init
]
at org.opencv.core.Core.n_minMaxLocManual(Native Method)
at org.opencv.core.Core.minMaxLoc(Core.java:7919)
at com.example.globallocalmaxima_00.MainClass.main(MainClass.java:32)