2016-01-19 50 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