我有一个图像作为灰度图像使用
Mat m = Highgui.imread(path, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
在Java中,现在我想计算中值,平均值和标准差。我是新手,我根本不知道如何找出计算和东西......尝试了2个小时的googeling,请给我一些关于如何对此进行研究的基本建议。我尝试过像“mean value java opencv”这样的关键字,发现了这个:
http://docs.opencv.org/java/2.4.2/org/opencv/core/Core.html#meanStdDev
我现在这样做:
MatOfDouble mu = new MatOfDouble();
MatOfDouble sigma = new MatOfDouble();
Core.meanStdDev(m, mu, sigma);
但是如何才能将均值/ stdev值作为双重访问?尝试过像
double d = mu.get(0,0)
但是有些不对劲。不幸的是,我不能通过阅读OpenCV Java文档找到它,因为我不知道该找什么/ at。
我需要mean / stdev来计算canny过滤器的阈值...至今提前感谢
试试这个:
double d = mu.get(0,0)[0]
mu.get(0,0)
返回一个double[]
,所以你可以得到第一个元素 - 它相当于C ++版本:
mu.val[0]
希望能帮助到你。
这是3通道彩色图像的相应代码。我使用了Lab颜色空间。它也适用于BGR ...
//compute color statistics for the source image
List<Mat> labsrc = new ArrayList<Mat>(3);
Core.split(src, labsrc);
MatOfDouble meansrc= new MatOfDouble();
MatOfDouble stdsrc= new MatOfDouble();
Core.meanStdDev(src, meansrc, stdsrc);
Log.d("meansrc",meansrc.dump() );
Log.d("meanval1", String.valueOf(meansrc.get(0,0)[0]));
Log.d("meanval2", String.valueOf(meansrc.get(1,0)[0]));
Log.d("meanval3", String.valueOf(meansrc.get(2,0)[0]));
double lMeanSrc = meansrc.get(0,0)[0];
double aMeanSrc = meansrc.get(1,0)[0];
double bMeanSrc = meansrc.get(2,0)[0];
double lStdSrc = stdsrc.get(0,0)[0];
double aStdSrc = stdsrc.get(1,0)[0];
double bStdSrc = stdsrc.get(2,0)[0];