我正在编写一个正在进行图像处理的 android 应用程序- 我在 Android 和 PC 上使用相同的 jpg 图像。 我的代码由具有 JNI 访问权限的库代码组成,它接受 Mat 对象并返回 RGB 的平均值 库中的代码是
cv::Scalar Lum_Y, stDEV_Y, Lum_BGR, stDEV_BGR;
double Lum_Y_orig, stDEV_Y_orig, Slope_orig;
meanStdDev(ROIImage,Lum_Y,stDEV_Y);
Logger::getInstance()->log("Origin_Mean_R",Lum_Y.val[2]);
Logger::getInstance()->log("Origin_Mean_G",Lum_Y.val[1]);
Logger::getInstance()->log("Origin_Mean_B",Lum_Y.val[0]);
当我从我的 PC 上运行这个方法时,我得到了与 Photoshop 和 ImageJ 相对应的结果。 当我从 android 运行完全相同的代码时,结果是不同的——有多少? 通过 +- 1。 这对我的算法至关重要。
我验证了两个图像都作为 BGR 加载,在 Android 部分我这样做:
Bitmap bim = BitmapFactory.decodeStream(imageStream);
Mat ImageMat = new Mat ( bim.getHeight(), bim.getWidth(), CvType.CV_8UC4, new Scalar(4));
Bitmap myBitmap32 = bim.copy(Bitmap.Config.ARGB_8888, true);
Utils.bitmapToMat(myBitmap32,ImageMat);
//ImageMat.convertTo(m, rtype);.
Mat mat2 = new Mat();
Imgproc.cvtColor(ImageMat, mat2, Imgproc.COLOR_RGBA2BGR);
我什至尝试直接从 android 运行 opencv mean calc,结果与从 JNI 运行完全一样。
有人可以帮助解决这个问题吗?在我看来,这与截断产生的差异很大。
提前致谢。
最佳答案
Berak 是正确的 - 谢谢。
当对 PNG 图像进行相同的分析时 - 参数是准确的。
再次感谢
关于java - OpenCV for android 与 openCV for windows 的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24528412/