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 相关文章推荐
swagger如何返回map字段注释
Jul 03 Java/Android
Java实现聊天机器人完善版
Jul 04 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
springboot+WebMagic+MyBatis爬虫框架的使用
Aug 07 Java/Android
java调用Restful接口的三种方法
Aug 23 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
maven依赖的version声明控制方式
Jan 18 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
Mar 25 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
Java存储没有重复元素的数组
Apr 29 Java/Android
Android 中的类文件和类加载器详情
Jun 05 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抓取并保存网站图片的实现代码
2015/10/28 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
ExpressJS入门实例
2015/01/14 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
小学运动会表扬稿
2014/01/19 职场文书
2014年新生军训方案
2014/05/01 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
消防工作实施方案
2014/06/09 职场文书
毕业生见习报告总结
2014/11/08 职场文书
文艺晚会开场白
2015/05/29 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
遗嘱格式范本
2015/08/07 职场文书
优化Mysql查询的示例
2022/04/26 MySQL