Open CV 图像处理基础:(四)使用 Open CV 在 Java 中进行基本的图片模糊处理

news/2024/7/21 6:00:20 标签: 图像处理, java, 人工智能, opencv

使用 Open CV 在 Java 中进行基本的图片模糊处理

方法介绍

在Java中使用OpenCV进行图片模糊处理,主要可以通过以下几种方式:

均值模糊(Averaging Blur):

通过计算核窗口内所有像素的平均值来模糊图像。这种方法可以移除图像噪声,但也会使图像细节变得模糊。

Imgproc.blur(src, dst, new Size(10, 10), new Point(-1, -1), Core.BORDER_DEFAULT);

这里src是原始图像,dst是模糊后的图像,new Size(10, 10)定义了核窗口的大小。

高斯模糊(Gaussian Blur):

这种模糊使用正态分布的权重核,相较于均值模糊,它保留了更多的图像细节。

Imgproc.GaussianBlur(src, dst, new Size(15, 15), 0);

其中new Size(15, 15)指定了高斯核的大小,0指定了沿X和Y方向的标准偏差。

中值模糊(Median Blur):

使用核窗口内像素的中值来替换。对于去除椒盐噪声很有效,同时能够保留边缘。

Imgproc.medianBlur(src, dst, 5);

其中5指定了核的大小,它必须是一个正的奇数。

双边滤波(Bilateral Filter):

它可以在保持边缘清晰的情况下减少不必要的噪声。这种过滤器通常用于图像去噪。

Imgproc.bilateralFilter(src, dst, 9, 75, 75);

其中9是邻域直径,两个75分别是颜色空间和坐标空间的标准偏差。

示例


import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class ImageBlur {
    static {
        // 加载 OpenCV 的本地库,这一步是必须的
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // 加载 OpenCV 的本地库,方式任选一种即可
        System.load("D:/dll/x64/opencv_java440.dll");
    }

    public static void main(String[] args) {
        String old = "D:/to/image.jpg";
        String blur = "D:/to/blur_image.jpg";
        // 读取图片
        Mat src = Imgcodecs.imread(old);

        // 检查图片是否正确读取
        if (src.empty()) {
            System.out.println("图片读取错误");
            return;
        }

        // 模糊度标准
        Mat dst = new Mat();
        int w = 15;
        int h = 15;
        // 模糊内核参数 int w, int h
        Size size = new Size(w, h);

        // 模糊处理
        Imgproc.blur(src, dst, size, new Point(-1, -1));

        // 保存修改后的图片
        Imgcodecs.imwrite(blur, dst);
    }
}

http://www.niftyadmin.cn/n/5312649.html

相关文章

Linux中RPM工具安装软件包

RPM(redhat package manager)包的命名规则(rpm 包安装的时候需要装依赖包,较为复杂 http-parser-2.8.0-2.el8.x86_64.rpm http-parser : 软件包的名称 2.8.0 : 软件包的版本号(版本号格式为主版本号.次版本号.修订号) 2 : 二进制包发布的次数,表示rpm包第2次编程生成的 el…

docker上安装 mysql+安装redis

1.还未安装docker的 1.1看这里 Docker安装(CentOS)简单使用-CSDN博客 1.2 一些基本命令 docker的基本命令(镜像容器)-CSDN博客 2.开始安装mysql5.7.26 2.1 拉取镜像 docker pull mysql:5.7.26 备注:其他版本查看 https://hub.docker.com/_/mysql/tags 2.2 运…

ubuntu基本工具

java # ubuntu20.04 安装 openjdk-17-jdk sudo apt install openjdk-17-jdk java -version javac -version which java参考 openjdk

【python、pytorch】

什么是Pytorch Pytorch是一个基于Numpy的科学计算包,向它的使用者提供了两大功能。作为Numpy的替代者,向用户提供使用GPU强大功能的能力。做为一款深度学习的平台,向用户提供最大的灵活性和速度。 基本元素操作 Tenors张量:张量…

Unity 利用UGUI之Slider制作进度条

在Unity中使用Slider和Text组件可以制作简单的进度条。 首先在场景中右键->UI->Slider,新建一个Slider组件: 同样方法新建一个Text组件,最终如图: 创建一个进度模拟脚本,Slider_Progressbar.cs using System.C…

mongodb基本命令操作

1.创建数据库 语法 use 数据库名字例如:创建hero数据库 use hero查询当前数据库 db如果想查询所有的数据库 show dbs发现并没有刚刚创建的数据库,如果要显示创建的数据库,需要向表中插入一条记录 db.hero.insert({name: "zs",age: 20,country: "china&quo…

jar to dmg app/windows .exe可执行文件打包方法

最近用JFrame做了一个java jar UI界面应用程序, 查资料发现网上大部分的文章都是使用 ant bundle方式打包, 结果测试,这个方式在新版macos中已经失效, 打包后的app根本无法运行. 最新可用的命令行方式打包jar 到可执行app应用的方法如下: 1. 使用 packr 打包 这个打包的文…

苍穹外卖Day01——总结1

总结1 1. 软件开发整体介绍1.1 软件开发流程1.2 角色分工1.3 软件环境 2. 苍穹外卖项目介绍2.1 项目介绍2.2 技术选项 3. Swagger4. 补充内容(待解决...) 1. 软件开发整体介绍 1.1 软件开发流程 1.2 角色分工 从角色分工里面就可以查看自己以后从事哪一…