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输出Hello World完美过程解析
Jun 13 Java/Android
IDEA使用SpringAssistant插件创建SpringCloud项目
Jun 23 Java/Android
spring boot项目application.properties文件存放及使用介绍
Jun 30 Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 Java/Android
Jpa Specification如何实现and和or同时使用查询
Nov 23 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
SSM项目使用拦截器实现登录验证功能
Jan 22 Java/Android
java如何实现获取客户端ip地址的示例代码
Apr 07 Java/Android
Spring Data JPA框架的核心概念和Repository接口
Apr 28 Java/Android
Java Spring Lifecycle的使用
May 06 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
基于php权限分配的实现代码
2013/04/28 PHP
php常用图片处理类
2016/03/16 PHP
phpStorm2020 注册码
2020/09/17 PHP
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
利用Python实现Windows定时关机功能
2017/03/21 Python
Python处理中文标点符号大集合
2018/05/14 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
python cumsum函数的具体使用
2019/07/29 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
《逃家小兔》教学反思
2014/02/23 职场文书
产品质量承诺书范文
2014/03/27 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
病假条格式范文
2015/08/17 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis