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 11 Java/Android
分享一些Java的常用工具
Jun 11 Java/Android
详解Java实践之建造者模式
Jun 18 Java/Android
Spring整合Mybatis的全过程
Jun 28 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
Java spring定时任务详解
Oct 05 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
Spring 使用注解开发
May 20 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
Jun 01 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
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
vuejs如何配置less
2017/04/25 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
JS实现简单打字测试
2020/06/24 Javascript
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
Python request使用方法及问题总结
2020/04/26 Python
python文件读取失败怎么处理
2020/06/23 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
承诺书模板大全
2015/05/04 职场文书
会议营销主持词
2015/07/03 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
Java 超详细讲解hashCode方法
2022/04/07 Java/Android
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js