2016-01-19 37 views
0

我可以在eclipse中使用opencv成功访问mean和stdDev的值。但我无法在Android中使用javacv。有两个主要问题。首先,javacv中不支持MatODouble。其次,不能调用“get”函数。这里的任何人都知道如何翻译javacv的这些代码。javacv和opencv之间的转换,以获得平均值和stdDev从一个垫

请给我伸出援助之手,我需要你确实......

MatOfDouble mu = new MatOfDouble(); 
MatOfDouble sigma = new MatOfDouble(); 
Core.meanStdDev(detected_edges, mu, sigma); 
double m = mu.get(0,0)[0]; 
double d = sigma.get(0,0)[0]; 

回答

1

下面的例子可以帮助: ColorCalibrator.java

CvMat b = CvMat.create(referenceColors.length*3, 1); 

... 

CvScalar mean = new CvScalar(), stddev = new CvScalar(); 
cvAvgSdv(b, mean, stddev, null); 

meanstddev后能被用作4元素向量(即stddev.val(0))。


更新#1关于如何创建CvMatBufferedImage

// To get a BufferedImage from an IplImage, or vice versa, we can chain calls to 
// Java2DFrameConverter and OpenCVFrameConverter, one after the other. 
Java2DFrameConverter cvt1 = new Java2DFrameConverter(); 
OpenCVFrameConverter.ToIplImage cvt2 = new OpenCVFrameConverter.ToIplImage(); 

BufferedImage img = ImageIO.read(new File(imagePath)); 
IplImage image1 = cvt2.convert(cvt1.convert(img)); 

CvMat image2 = image1.asCvMat(); 
+0

我真的很感谢你的帮助,因为javacv学习者缺乏支持这里... – hychanbb

+0

你知道如何将图像读入格式CvMat?或者将Mat转换为CvMat格式。我已经找到了网络,没有Javacv的解决方案(版本:bytedeco)。希望有人可以帮助TT – hychanbb

+0

只是检查我的更新#1上面 – Kornel