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 相关文章推荐
新手入门Jvm-- JVM对象创建与内存分配机制
Jun 18 Java/Android
详解Java分布式事务的 6 种解决方案
Jun 26 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
Java SSM配置文件案例详解
Aug 30 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
java代码实现空间切割
Jan 18 Java/Android
Spring Data JPA框架的核心概念和Repository接口
Apr 28 Java/Android
Java 异步任务计算FutureTask
Apr 28 Java/Android
Android Studio 计算器开发
May 20 Java/Android
Android 中的类文件和类加载器详情
Jun 05 Java/Android
Java界面编程实现界面跳转
Jun 16 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
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
jQuery实现日历效果
2020/09/11 jQuery
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python 连接sqlite及简单操作
2017/06/30 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Python3内置模块random随机方法小结
2019/07/13 Python
Python实现Restful API的例子
2019/08/31 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
高校学生干部的自我评价分享
2013/11/04 职场文书
美工的岗位职责
2013/11/14 职场文书
管理学专业个人求职信范文
2013/12/13 职场文书
财务科科长岗位职责
2014/03/10 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
如何撰写促销方案?
2019/07/05 职场文书