1
我正在写一个Android应用程序,它正在做图像处理 - 我使用相同的jpg图像为Android和PC。 我的代码包括使用JNI访问库中的代码,它接受垫目标和库返回平均值为RGB 代码是OpenCV for android与openCV for windows不同的结果
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]);
当我从我的电脑运行这个方法我得到的结果它们的通讯员到Photoshop和ImageJ。 当我从android运行相同的确切代码的结果是不同的 - 多少? by + - 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);
我甚至试图运行的OpenCV直接从Android的平均计算,结果是完全一样的JNI运行。
有人可以帮助解决这个问题吗?在我看来,这是截然不同的很大一部分。
在此先感谢。
所有这些只是由于有损jpg压缩。避免jpg的图像处理! – berak