OpenCV高斯模糊方法
来源:互联网 发布:java 安装包 编辑:程序博客网 时间:2024/06/03 09:13
纯粹阅读,请移步OpenCV高斯模糊方法
效果图
源码
KqwOpenCVBlurDemo
步骤
- 将获取到的Bitmap图片转成Mat对象
// Bitmap转为MatMat src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4);Utils.bitmapToMat(bitmap, src);
- 调用OpenCV的高斯模糊方法
// 高斯模糊方法Imgproc.GaussianBlur(src, src, new Size(91, 91), 0);
- 将处理完的Mat数据转成Bitmap对象
// Mat转BitmapBitmap processedImage = Bitmap.createBitmap(src.cols(), src.rows(), Bitmap.Config.ARGB_8888);Utils.matToBitmap(src, processedImage);
封装
这里我用到了RxJava。主要是因为图片处理是耗时操作,会阻塞线程,为了防止界面卡顿,这里使用RxJava进行了线程切换。
package kong.qingwei.kqwopencvblurdemo;import android.graphics.Bitmap;import org.opencv.android.Utils;import org.opencv.core.CvType;import org.opencv.core.Mat;import org.opencv.core.Size;import org.opencv.imgproc.Imgproc;import rx.Observable;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.functions.Func1;import rx.schedulers.Schedulers;/** * Created by kqw on 2016/8/17. * 图片虚化的工具类 */public class BlurUtil { private Subscriber<Bitmap> mSubscriber; public BlurUtil(Subscriber<Bitmap> subscriber) { mSubscriber = subscriber; } /** * 高斯模糊方法 * * @param bitmap 要处理的图片 */ public void gaussianBlur(Bitmap bitmap) { // RxJava处理图片虚化 if (null != mSubscriber) Observable .just(bitmap) .map(new Func1<Bitmap, Bitmap>() { @Override public Bitmap call(Bitmap bitmap) { // Bitmap转为Mat Mat src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4); Utils.bitmapToMat(bitmap, src); // 高斯模糊方法 Imgproc.GaussianBlur(src, src, new Size(91, 91), 0); // Mat转Bitmap Bitmap processedImage = Bitmap.createBitmap(src.cols(), src.rows(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(src, processedImage); return processedImage; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mSubscriber); }}
工具类的初始化
图片处理在子线程处理,处理完通过回调返回。
// 图片模糊处理的工具类mBlurUtil = new BlurUtil(new Subscriber<Bitmap>() { @Override public void onCompleted() { // 图片处理完成 dismissProgressDialog(); } @Override public void onError(Throwable e) { // 图片处理异常 dismissProgressDialog(); } @Override public void onNext(Bitmap bitmap) { // 获取到处理后的图片 mIvImageProcessed.setImageBitmap(bitmap); }});
图片模糊处理
// 高斯模糊算法处理图片mBlurUtil.gaussianBlur(mSelectImage);
0 0
- OpenCV高斯模糊方法
- OpenCV 高斯模糊
- opencv实现高斯模糊
- opencv实现高斯模糊
- openCV 高斯模糊及原理
- Python+OpenCV实现图像高斯模糊
- OPENCV 简单模糊 中值模糊 高斯模糊 双边模糊等
- OpenCV均值模糊方法
- OpenCV中值模糊方法
- android图片高斯模糊的方法
- android 图片高斯模糊处理方法
- 基于高斯方法的图像模糊
- 高斯模糊的实现方法
- {Android-OpenCV调用CvSmooth实现高斯模糊}
- 关于高斯模糊与opencv中的GaussianBlur函数
- OpenCV——高斯模糊与毛玻璃特效
- opencv学习之三:高斯模糊以及canny检测
- 关于高斯模糊与opencv中的GaussianBlur函数
- 解决ScrollView和GridView滑动冲突的问题
- 51nod 最大子段和
- 198. House Robber
- 机房收费系统(五)——结账
- Design Support Library (I): Navigation View的使用
- OpenCV高斯模糊方法
- golang微信公众平台验证
- 多校联合训练hdu5845---Best Divison
- 建造者模式
- 【Go】为什么 Go 语言把类型声明放在后面?
- 2016.08.17【初中部 NOIP提高组 】模拟赛C题解
- 改NavigationView的MenuItem的字体颜色并修改默认选中的item
- 如何利用word类型的文本编辑器,离线写csdn博客
- 【Oracle 优化器】SQL计划指令(SQL Plan Directives)