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 相关文章推荐
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
Java实现聊天机器人完善版
Jul 04 Java/Android
dubbo集成zipkin获取Traceid的实现
Jul 26 Java/Android
JVM钩子函数的使用场景详解
Aug 23 Java/Android
java如何实现socket连接方法封装
Sep 25 Java/Android
Java使用Unsafe类的示例详解
Sep 25 Java/Android
Android自定义scrollview实现回弹效果
Apr 01 Java/Android
Java 超详细讲解hashCode方法
Apr 07 Java/Android
JavaWeb Servlet开发注册页面实例
Apr 11 Java/Android
Spring Boot配合PageHelper优化大表查询数据分页
Apr 20 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
tree shaking对打包体积优化及作用
Jul 07 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
django 读取图片到页面实例
2020/03/27 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
招标承诺书
2014/08/30 职场文书
就业协议书范本
2014/10/08 职场文书
运动会1000米加油稿
2015/07/21 职场文书
初一年级组工作总结
2015/08/12 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript