大家好,我是青空。

青空最近在逛一些社区的时候发现了有很多图片是像素图,感觉挺好玩的。正巧最近自己在学习OpenCV,所以在这里给大家演示一下如何使用OpenCV来处理像素图。

像素图其实有点类似于类似于打马赛克的功能。通过像素的变化,演示一个像素画的功能。像素画在 NFT 中特别的流行。

准备工作

我们先引入 JavaCV 的依赖库

  <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.6</version></dependency>

这种方式引入,会把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 = 10val newWidth = width / pixelSizeval newHeight = height / pixelSize

根据设定的像素比, 对原图进行缩小,再放大的两次 resize 操作。这样就完成了像素图的处理。

    val imgTmp: Mat? = nullopencv_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.Sizefun 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 = 10val newWidth = width / pixelSizeval newHeight = height / pixelSizeval imgTmp: Mat? = nullopencv_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)}

总结

像素图处理的演示到这里就结束了,opencv还能做更多好玩的事情,后面陆陆续续更新一些好玩的图片处理功能。

JavaCV 实现照片打马赛克功能相关推荐

  1. 让假照片原形毕露?今日水印相机上线“照片验真”功能

    "痕迹管理"是目前被广泛认可的一种较为科学的管理方式,通过查证保存的文字.图片.工作日志等档案材料,可以清晰地还原过去任何一个工作场景,同时也可加强组织管理,监督和推动工作落实.今 ...

  2. 视频截帧:javacv实现视频截帧功能

    javacv实现视频截帧功能 引入依赖 使用 引入依赖 <dependency><groupId>org.bytedeco</groupId><artifac ...

  3. 怎么给照片添加马赛克?这些方法值得收藏

    现在的网络非常发达,有些不法分子根据一些图片上的内容,就可以挖掘出很多信息.因此我们平时在分享图片的时候,就需要着重保护一下个人信息,避免个人信息的泄露.当我们发现图片上带有个人信息的时候,就可以使用 ...

  4. android 去掉蓝牙传输文件功能_iPhone还在用蓝牙传输照片?这个功能更好用还快哟,了解一下...

    别的手机在还在用蓝牙传输文件照片的时候,iPhone的蓝牙被拿来听音乐.iPhone的互传有自己一套特有的操作.想知道是什么吗?那就是苹果系统下特有的AirDrop,AirDrop隔空传输支持苹果设备 ...

  5. (H5)canvas实现裁剪图片和马赛克功能,以及又拍云上传图片

    1.核心功能 此组件功能包含: 图片裁剪(裁剪框拖动,裁剪框改变大小): 图片马赛克(绘制马赛克,清除马赛克): 图片预览.图片还原(返回原图.返回处理图): 图片上传(获取签名.上传图片). 2.核 ...

  6. 怎么屏蔽还有照片_华为手机中老是出现不明照片?这些功能一定要注意,尽量将其关闭...

    我们在使用华为手机的过程中,经常会在手机相册中发现里面多了很多明明不是自己缓存的图片,并且占了很大一部分空间,那么这些图片究竟是从哪里来的呢?接下来就给大家讲解. 一.微信自动下载 微信作为我们日常生 ...

  7. 舞蝶飞照片创意软件功能简介

    舞蝶飞照片官方网站 即使你不会Photoshop,你也可以成为照片创意制作高手,为你的情人.爱人和宝宝制作精美的照片. 数码照片创意制作 照片边框.文字.点缀.花边.背景,各种主题的摸版,动动鼠标,你 ...

  8. Google Picasa 3网络照片管理新功能

    根据Google官方博客 报道,除了 发布Google Chrome浏览器之外,Google最新还同时发布了新版图片管理软件 Picasa 3英文版(中文版还依旧是2.7),经过一番试用,我发现Pic ...

  9. 怎么屏蔽还有照片_Facebook约会功能美国上线!怎么用?好用不?

    [搜索下载华舆APP,浏览世界各个国家媒体的新闻资讯,且无需翻译] 华舆讯 据美国中文网报道 星期四,Facebook的约会功能在美国上线了. 无须安装专门的手机APP,甚至不需要更新现有的Faceb ...

最新文章

  1. 【模拟】不高兴的津津
  2. 现代计算机入门知识,计算机基础知识
  3. 关于算法的时间复杂度和空间复杂度的总结
  4. 再给大家发 200 个红包!
  5. win2003+sql2005配置
  6. 关于VS2013下制作和使用静态库和动态库
  7. MOSSE目标跟踪算法的理解
  8. androidx86 9.0下载_13.3寸大屏安卓9.0强悍性能刷新你认知!BOOX MAX3电纸书上手测评...
  9. Python基础——1基础
  10. 不懂网络和懂一点的区别
  11. 临时笔记, 有意思的东西
  12. centos 虚拟机 使用串口_vmware中的centos怎样扩充空间
  13. DPDK初始化分析(五)
  14. 前端计算机英语单词,解决文件命名,变量命名头皮发麻,单词超多1700个前端专属单词,css常用命名单词【起名字太烦了全背下来内卷吧小伙伴大前端时代来临了】
  15. 机器学习实战(4)——训练模型
  16. EBS创建会计科目请求报错问题查询
  17. 如何右键菜单添加命令提示符_在右键菜单顶部添加过滤器命令
  18. OpenCv笔记(五)--图像分割与分水岭算法
  19. 云服务器能像虚拟主机那样,云服务器能像虚拟主机那样
  20. 面向对象三大基本特性

热门文章

  1. [Introduction to AI] Local Search::Hill Climbing (最陡上升)
  2. sr550服务器服务器系统安装,sr550服务器阵列配置
  3. 绝色美女如何看透陌生人
  4. 优盘里文件夹变成html,u盘里面的文件打开里面没内容了怎么回事 u盘打开之后里面的文件都不见了怎么办...
  5. bo JAVA是什么意思_entity、bo、vo、po、dto、pojo如何理解和区分?
  6. 每日 30 秒 ⏱ 复制内容到剪贴板
  7. 看了就会的Next.js SSR SSG实战教程
  8. pandas金融数据处理
  9. 倒金字塔java语言_金字塔和倒金字塔
  10. 零基础想要学习前端,却无从下手?其实你就差一套这样的web前端学习路线