Java 在OpenCV for Android中添加两个32FC4类型的Mat

Java 在OpenCV for Android中添加两个32FC4类型的Mat,java,android,opencv,image-processing,Java,Android,Opencv,Image Processing,为了减少图像中的噪声,我尝试获得10幅图像的平均值 Mat imgMain = new Mat(n_height, n_width, CvType.CV_32FC4); Mat imgFin = new Mat(n_height, n_width, CvType.CV_32FC4); for(int i=1; i <= 10; i++) { //Crop the image image.recycle(); image = null; image = Bi

为了减少图像中的噪声,我尝试获得10幅图像的平均值

Mat imgMain = new Mat(n_height, n_width, CvType.CV_32FC4);
Mat imgFin = new Mat(n_height, n_width, CvType.CV_32FC4);

for(int i=1; i <= 10; i++) {
    //Crop the image
    image.recycle();
    image = null;
    image = BitmapFactory.decodeFile("/storage/sdcard0/DCIM/A" + String.valueOf(i) + ".jpg");
    pimage = Bitmap.createBitmap(image, leftOff1, topOff1, n_width, n_height);
    Utils.bitmapToMat(pimage, imgMain);

    scaleAdd(imgMain, 0.1, imgFin, imgFin);
    }
运行应用程序时,我得到以下消息:

原因:CvException[org.opencv.core.CvException:cv::Exception: /hdd2/buildbot/slaves/slave\u ardbeg1/50-SDK/opencv/modules/core/src/matmul.cpp:2079: 错误:-215 src1.type==函数void中的src2.type cv::scaleAddcv::InputArray,double,cv::InputArray,cv::OutputArray ] 在org.opencv.core.core.scaleAdd\u 0Native方法中 位于org.opencv.core.core.scaleAddCore.java:6690 在MainActivity.imageAnalysisMainActivity.java:123

其中第123行是scaledDimgmaing,0.1,imgFin,imgFin

根据图纸,src1、src2和dst垫应具有相同的尺寸和类型。但是,当我将imgFin类型设置为32FC4时,会出现此错误,但当imgFin设置为8UC4时,不会出现任何错误。有这种经历吗?我需要在imgFin中保留浮点数,这就是为什么我不能使用8UC4

// this line will overwrite your imgMain, 
// the type will be CV_8UC4, regardless, what you said before.
Utils.bitmapToMat(pimage, imgMain);

// so, convert to float:
imgMain.convertTo(imgMain, CvType.CV_32FC4);

// now add float images, to avoid precision loss:
scaleAdd(imgMain, 0.1, imgFin, imgFin);