我可以在eclipse中使用opencv成功访问mean和stdDev的值。但是我无法在Android中使用javacv做到这一点。主要有两个问题。首先,javacv不支持MatODouble。第二,不能调用“获取”功能。这里的任何人都知道如何为javacv转换这些代码。
请帮助我,我确实需要你们……
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];
最佳答案
以下示例可能会有所帮助:
ColorCalibrator.java
CvMat b = CvMat.create(referenceColors.length*3, 1);
...
CvScalar mean = new CvScalar(), stddev = new CvScalar();
cvAvgSdv(b, mean, stddev, null);
之后
mean
和stddev
可以用作4元素 vector (即stddev.val(0)
)。有关如何从
CvMat
创建BufferedImage
的更新#1 :// 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();
关于android - javacv和opencv之间的转换以从Mat中获取均值和stdDev,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34871905/