android的OpenCV与windows的OpenCV结果不同

OpenCV for android different results with openCV for windows

本文关键字:OpenCV 结果 android windows      更新时间:2023-10-16

我正在写一个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相对应。当我从安卓运行相同的确切代码的结果是不同的-多少?加- 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图像进行相同的分析时-参数准确。

再次感谢您