java - OpenCV 2.4 双边滤波

标签 java android opencv image-processing filtering

在OpenCV android中,是否可以应用双边过滤?我知道我可以像 Imgproc.GaussianBlur(gray, grey, new Size(15,15), 0); 一样进行高斯模糊,但我似乎找不到双边过滤的代码。

最佳答案

似乎有可能:

Imgproc.bilateralFilter(mat, dstMat, 10, 50, 0);

来自 herehere .

更新

这个:

E/AndroidRuntime: FATAL EXCEPTION: Thread-1376 Process: PID: 30368 CvException [org.opencv.core.CvException: cv::Exception: /Volumes/build-storage/build/2_4_pack-android/opencv/modules‌​/imgproc/src/smooth.‌​cpp:1925: error: (-215) (src.type() == CV_8UC1 || src.type() == CV_8UC3) && src.type() == dst.type() && src.size() == dst.size() && src.data != dst.data in function void cv::bilateralFilter_8u(const cv::Mat&, cv::Mat&, int, double, double, int)

是因为处理Mat的颜色格式错误。您应该将 4 channel RGBA 格式转换为 3 channel RGB 以便应用 bilingualFilter()(如 bilingualFilterTutorial() 中所示)方法 here )。所以,你的代码应该是这样的:

// load Mat from somewhere (e.g. from assets)
mSourceImageMat = Utils.loadResource(this, R.drawable.<your_image>);
// convert 4 channel Mat to 3 channel Mat
Imgproc.cvtColor(mSourceImageMat, mSourceImageMat, Imgproc.COLOR_BGRA2BGR);

// create dest Mat
Mat dstMat = mSourceImageMat.clone();

// apply bilateral filter
Imgproc.bilateralFilter(mSourceImageMat, dstMat, 10, 250, 50);

// convert to 4 channels Mat back
Imgproc.cvtColor(dstMat, dstMat, Imgproc.COLOR_RGB2RGBA);

// create result bitmap and convert Mat to it
Bitmap bm = Bitmap.createBitmap(mSourceImageMat.cols(), mSourceImageMat.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(dstMat, bm);

// show bitmap on ImageView
mImageView.setImageBitmap(bm);

关于java - OpenCV 2.4 双边滤波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414033/

相关文章:

Android opengl 1.1 Render to Texture 1286 错误(无效的帧缓冲操作)

opencv - 在 Android 设备上使用 OpenCv 检测音乐形状

algorithm - 论文 "An Image Signature for any kind of Image"中的算法背后的推理是什么?

java - 没有pom的 Sonar ?

java - 二维 ArrayList 到普通数组 java

java - 我想使用 Java 获取我的 Android 设备的内部版本号、Android 版本。我使用以下代码:

java - 通过php在java(android studio)中获取数据

c++ - 在 OpenCV 中加快将图像写入硬盘的速度

java - 如何在 Selenium 中选择 div->ul->li 中的元素

java - 从 java 线程转移到 scala actor