JavaCV实现照片马赛克效果


Posted in Java/Android onJanuary 22, 2022

前言

青空最近在逛一些社区的时候发现了有很多图片是像素图,感觉挺好玩的。正巧最近自己在学习JavaCV,所以在这里给大家演示一下如何使用JavaCV来处理像素图。

像素图其实有点类似于类似于打马赛克的功能。通过像素的变化,演示一个像素画的功能。像素画在 NFT 中特别的流行。

准备工作

我们先引入 JavaCV 的依赖库

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.6</version>
  </dependency>

这种方式引入,会把javacv 所有包含的都引入进来。平时测试使用都时候,可以这样操作。但是到真实项目中,还是需要做一次精简才行。

另外我们准备了一个图片。

JavaCV实现照片马赛克效果

代码实现

读取文件

val path ="path/to/img/"
    val img = opencv_imgcodecs.imread(path + "meinv.jpeg")

获取原图的像素宽高,然后进行像素比缩放。

val size = img.size()
    val height = size.height()
    val width = size.width()
    
    val pixelSize = 10
    
    val newWidth = width / pixelSize
    val newHeight = height / pixelSize

根据设定的像素比, 对原图进行缩小,再放大的两次 resize 操作。这样就完成了像素图的处理。

val imgTmp: Mat? = null
    opencv_imgproc.resize(img, imgTmp, Size(newWidth, newHeight),0.0, 0.0, opencv_imgproc.INTER_NEAREST)
    opencv_imgproc.resize(img, imgTmp, Size(width, height),0.0, 0.0, opencv_imgproc.INTER_NEAREST)

那我们来看下处理过之后的图像效果吧

效果看起来还可以,图片颜色单一图片尺寸稍微小一些的效果会好很多。

完整代码

import org.bytedeco.opencv.global.opencv_highgui
import org.bytedeco.opencv.global.opencv_imgcodecs
import org.bytedeco.opencv.global.opencv_imgproc
import org.bytedeco.opencv.opencv_core.Mat
import org.bytedeco.opencv.opencv_core.Size

fun main(args: Array<String>) {

    val path = "path/to/img/"
    val img = opencv_imgcodecs.imread(path + "meinv.jpeg")

    val size = img.size()
    val height = size.height()
    val width = size.width()

    val pixelSize = 10

    val newWidth = width / pixelSize
    val newHeight = height / pixelSize

    val imgTmp: Mat? = null
    opencv_imgproc.resize(img, imgTmp, Size(newWidth, newHeight), 0.0, 0.0, opencv_imgproc.INTER_NEAREST)
    opencv_imgproc.resize(img, imgTmp, Size(width, height), 0.0, 0.0, opencv_imgproc.INTER_NEAREST)


    opencv_highgui.imshow("meinv", img);
    opencv_highgui.waitKey(0)

}

到此这篇关于JavaCV实现照片马赛克效果的文章就介绍到这了,更多相关JavaCV内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
解析Java中的static关键字
Jun 14 Java/Android
Java Shutdown Hook场景使用及源码分析
Jun 15 Java/Android
Java各种比较对象的方式的对比总结
Jun 20 Java/Android
详解java如何集成swagger组件
Jun 21 Java/Android
Spring Boot两种全局配置和两种注解的操作方法
Jun 29 Java/Android
分析JVM源码之Thread.interrupt系统级别线程打断
Jun 29 Java/Android
详解Spring Boot使用系统参数表提升系统的灵活性
Jun 30 Java/Android
java如何实现获取客户端ip地址的示例代码
Apr 07 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
SpringBoot 集成短信和邮件 以阿里云短信服务为例
Apr 22 Java/Android
HttpClient实现表单提交上传文件
Aug 14 Java/Android
JDK8中String的intern()方法实例详细解读
Sep 23 Java/Android
maven依赖的version声明控制方式
深入浅出讲解Java8函数式编程
Jan 18 #Java/Android
关于maven依赖 ${xxx.version}报错问题
Jan 18 #Java/Android
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 #Java/Android
springboot中的pom文件 project报错问题
Jan 18 #Java/Android
java代码实现空间切割
You might like
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
javascript date格式化示例
2013/09/25 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
js读取cookie方法总结
2014/10/31 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
python操作ie登陆土豆网的方法
2015/05/09 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
安全生产大检查方案
2014/05/07 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
怎样写辞职信
2015/02/27 职场文书
学校捐书倡议书
2015/04/27 职场文书
心理健康教育主题班会
2015/08/13 职场文书