java - Adding Two Mat of type 32FC4 in OpenCV for Android -
to reduce noise in image, trying average of 10 images.
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; <= 10; i++) { //crop 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); }
running application, following msg:
caused by: cvexception [org.opencv.core.cvexception: cv::exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-sdk/opencv/modules/core/src/matmul.cpp:2079: error: (-215) src1.type() == src2.type() in function void cv::scaleadd(cv::inputarray, double, cv::inputarray, cv::outputarray) ] @ org.opencv.core.core.scaleadd_0(native method) @ org.opencv.core.core.scaleadd(core.java:6690) @ mainactivity.imageanalysis(mainactivity.java:123)
where line 123 scaleadd(imgmaing, 0.1, imgfin, imgfin);
according reference, src1, src2 , dst mat should of same size , type. however, error when set imgfin type 32fc4 not errors when imgfin set 8uc4. experience of kind? need keep floating numbers in imgfin why can't go 8uc4.
// line overwrite imgmain, // type cv_8uc4, regardless, said before. utils.bitmaptomat(pimage, imgmain); // so, convert float: imgmain.convertto(imgmain, cvtype.cv_32fc4); // add float images, avoid precision loss: scaleadd(imgmain, 0.1, imgfin, imgfin);
Comments
Post a Comment