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循环队列与非循环队列的区别总结
Jun 22 Java/Android
Spring Boot 整合 Apache Dubbo的示例代码
Jul 04 Java/Android
java固定大小队列的几种实现方式详解
Jul 15 Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
Aug 23 Java/Android
JPA 通过Specification如何实现复杂查询
Nov 23 Java/Android
使用Java去实现超市会员管理系统
Mar 18 Java/Android
剑指Offer之Java算法习题精讲二叉树的构造和遍历
Mar 21 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
mybatis 获取更新记录的id
May 20 Java/Android
详解Spring Bean的配置方式与实例化
Jun 10 Java/Android
Spring Boot实现文件上传下载
Aug 14 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
德生S2000电路分析
2021/03/02 无线电
PHP新手上路(六)
2006/10/09 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
2008/01/10 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python re模块介绍
2014/11/30 Python
对Python 内建函数和保留字详解
2018/10/15 Python
使用python接入微信聊天机器人
2020/03/31 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
经典的班主任推荐信
2013/10/28 职场文书
计算机科学与技术应届生求职信
2013/11/07 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle