OpenCV高斯模糊方法

纯粹阅读,请移步OpenCV高斯模糊方法

效果图

源码

KqwOpenCVBlurDemo

步骤

  1. 将获取到的Bitmap图片转成Mat对象
// Bitmap转为Mat
Mat src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4);
Utils.bitmapToMat(bitmap, src);
  1. 调用OpenCV的高斯模糊方法
// 高斯模糊方法
Imgproc.GaussianBlur(src, src, new Size(91, 91), 0);
  1. 将处理完的Mat数据转成Bitmap对象
// Mat转Bitmap
Bitmap 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);
时间: 2024-08-02 18:22:37

OpenCV高斯模糊方法的相关文章

Lua 调用 Opencv 的方法

Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lua 调用 Opencv 呢? 查了 Torch 的官方文档,发现只有这么几个可以调用的包: 链接: https://github.com/torch/torch7/wiki/Cheatsheet 然后,你点击一个进去,发现有这么一个方法,可以安装对应的 Opencv 包:  然后,你就在终端里输入:

车牌识别01__车牌抠图(CNN深度学习—opencv实现方法)

一.安装依赖 1.mac安装brem /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2.mac安装opencvbrew install opencv3.安装opencv-pythonpip3.6 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python参考以下地址h

关于在RK3288上安装Opencv的方法

Opencv是一个开源的计算机视觉库,可以给开发人员提供更便捷的方式设计复杂的视觉应用,Opencv主要是用c和c++编写,可以运行在Windows/Linux/Mac等上.这几天尝试着在RK3288上安装Opencv,被虐了好多遍,幸好没有放弃,终于弄出了.之前一直是通过电脑先交叉编译Opencv再移植的方法,但是在编译过程中总是遇到各种问题,换了不同的Opencv源又会出现新的问题,所以如果有交叉编译移植成功的朋友不妨交流一下.这里采用了一种比较折中的方法,直接在开发板上配置好环境,然后安装

简单eclipse配置opencv的方法

下载opencv2.4.4.exe(其它也可以) 解压安装到了D:/ 根目录下. 我命名为了D:/opencv244,里面包含build等文件夹. 在eclipse新建一个工程 helloCV (大家可以参看官网步骤 http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html ) 我和官网配置稍微有一点点不同. 在倒数两步. 具体步骤如下: 右击工程--build pa

OpenCV视频播放方法

今天折腾了一下OpenCV的视频播放功能,希望能对项目又帮助- 代码还是非常easy的,仅仅是之前遇到点小麻烦,找不到cvCreateFileCapture函数的定义,花了一两个小时 Makefile: SOURCE_FILE := play_video.c OBJECT_FILE := play_video.o CFLAGS = -Wall -Wconversion -O3 `pkg-config --cflags opencv` LIBS = `pkg-config --libs --cfl

opencv 高斯模糊

高斯模糊是一种图像模糊滤波器,它用正态分布计算图像中每个像素的变换.N 维空间正态分布方程为 在二维空间定义为 其中 r 是模糊半径 (r2 = u2 + v2),σ 是正态分布的标准偏差.在二维空间中,这个公式生成的曲面的等高线是从中心开始呈正态分布的同心圆.分布不为零的像素组成的卷积矩阵与原始图像做变换.每个像素的值都是周围相邻像素值的加权平均.原始像素的值有最大的高斯分布值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小.这样进行模糊处理比其它的均衡模糊滤波器更高地保

Android Studio使用OpenCV的配置方法

1.下载 进入官网(http://opencv.org/)下载OpenCV4Android并解压.目录结构如下图所示. 其中,sdk目录即是我们开发opencv所需要的类库:samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考:doc目录为opencv类库的使用说明及api文档等:而apk目录则存放着对应于各内核版本的OpenCV_2.4.3.2_Manager_2.4应用安装包.此应用用来管理手机设备中的opencv类库,

【从零学习openCV】IOS7人脸识别实战

前言 接着上篇<IOS7下的人脸检測>,我们顺藤摸瓜的学习怎样在IOS7下用openCV的进行人脸识别,实际上非常easy,因为人脸检測部分已经完毕,剩下的无非调用openCV的方法对採集到的人脸样本进行训练,终于得到一个能够预測人脸的模型.可是当中的原理可谓是博大精深,因为快临最近末考试了,没时间去琢磨当中详细的细节,这次就先写个大概的demo,下次更新文章就得到6月20号之后了. 原理: 从OpenCV2.4之后,openCV增加了新的类FaceRecognizer,我们能够使用它便捷地进

opencv 2.4.9+pcl 1.6+vs2010+win7 32开发环境配置

最近在做图像方面的开发,需要对软件开发平台进行配置,我查找了关于这些方面的内容,由于软件版本很多,每个人的开发平台又不一样所以在对平台进行搭建过程中遇到了很多问题,下面我将我搭建平台的流程做一个记录.在这个过程中我参考了两篇比较好的博客: 浅墨关于opencv开发环境的搭建:http://blog.csdn.net/poem_qianmo/article/details/19809337 邹宇华关于pcl中openni的使用:http://blog.csdn.net/chenyusiyuan/a