Java 在OpenCV for Android中添加两个32FC4类型的Mat
为了减少图像中的噪声,我尝试获得10幅图像的平均值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
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);