马赛克的原理比较简单,以一个个的颜色块来平铺整个图片,同一个颜色块使用一种颜色,颜色块形状不定,正方形,长方形,六边形,三角形都可以,而颜色块中的颜色就根据算法不同而不同。

原图如下

1、以颜色块第一个点的颜色作为颜色块的颜色

func image21() {scale := 7m1, _ := os.Open("./image1.jpg")defer m1.Close()img1, _, _ := image.Decode(m1)img11 := image.NewRGBA(img1.Bounds())for i := 0; i < img1.Bounds().Max.X; i++ {for j := 0; j < img1.Bounds().Max.Y; j++ {if i%scale == 0 && j%scale == 0 {po := img1.At(i, j)for m := 0; m < scale; m++ {for n := 0; n < scale; n++ {img11.Set(i+m, j+n, po)}}}}}f1, _ := os.Create("./image1-21.jpg")defer f1.Close()jpeg.Encode(f1, img11, nil)
}

中间女生的背部这里效果不太好

2、以颜色块中心点的颜色作为颜色块的颜色

func image20() {scale := 7m1, _ := os.Open("./image1.jpg")defer m1.Close()img1, _, _ := image.Decode(m1)img11 := image.NewRGBA(img1.Bounds())x := img1.Bounds().Max.X / scaley := img1.Bounds().Max.Y / scalefor i := 0; i < x; i++ {for j := 0; j < y; j++ {po := img1.At(i*scale+2, j*scale+2)for m := 0; m < scale; m++ {for n := 0; n < scale; n++ {img11.Set(i*scale+m, j*scale+n, po)}}}}f1, _ := os.Create("./image1-20.jpg")defer f1.Close()jpeg.Encode(f1, img11, nil)
}

3、取颜色块内随机像素点最为颜色块的颜色

func image22() {scale := 7m1, _ := os.Open("./image1.jpg")defer m1.Close()img1, _, _ := image.Decode(m1)img11 := image.NewRGBA(img1.Bounds())for i := 0; i < img1.Bounds().Max.X; i++ {for j := 0; j < img1.Bounds().Max.Y; j++ {if i%scale == 0 && j%scale == 0 {d := rand.Intn(scale)po := img1.At(d+i, d+j)for m := 0; m < scale; m++ {for n := 0; n < scale; n++ {img11.Set(i+m, j+n, po)}}}}}f1, _ := os.Create("./image1-22.jpg")defer f1.Close()jpeg.Encode(f1, img11, nil)
}

相对而言,这个的效果要好一些。

golang中的图像image处理之马赛克效果相关推荐

  1. golang中的图像image处理详解

    常用的图像格式有png,jpeg,gif,对应的文件后缀为png,jpg,gif,当然文件的具体内容编码才能证明存放的是哪种文件,图像文件的头部都存储了具体标志,比如jpeg前缀\xffd8,png前 ...

  2. Java中的实现马赛克效果以及灰度效果----整张图片

    ** Java中的实现马赛克效果以及灰度效果-----整张图片 ** 实现该效果的思路: 我们知道图片是由一个一个的像素组成的,比如一张图片的分辨率为800 * 800,则它是由800个像素 * 80 ...

  3. Golang中Wesocket的使用

    Golang中Wesocket的使用 文章目录 Golang中Wesocket的使用 一.什么是WebSockets 二.第三方包实现 1.Go 中的 WebSockets 2.JavaScript ...

  4. Python,OpenCV中的图像修复——cv2.inpaint()

    Python,OpenCV中的图像修复--cv2.inpaint 1. 效果图 2. 原理 3. 源码 参考 image inpainting 图像修改 这篇博客将介绍如何通过OpenCV中图像修复的 ...

  5. MATLAB【八】———— matlab 读取单个(多个)文件夹中所有图像

    0.matlab 移动(复制)文件到另一个文件夹 sourcePath = '.\Square_train'; targetPath = '.\Square_test'; fileList = dir ...

  6. Golang中Buffer高效拼接字符串以及自定义线程安全Buffer

    本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章.觉得好的话,顺手分享到朋友圈吧,感谢支持. Go中可以使用"+ ...

  7. 如何在golang中关闭bufio.reader_Golang 并发模型系列:1. 轻松入门流水线模型

    Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! Golang作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,它有多种并发模型,通过流水线模型系列文 ...

  8. Java中实现六种图像处理的效果(灰度化、马赛克效果、去背景实现、珠纹化实现、黑白版画效果、油画效果)

    ** Java中实现六种图像处理的效果(灰度化.马赛克效果.去背景实现.珠纹化实现.黑白版画效果.油画效果) ** 本文的编程的思想: 先将实现这六种效果的方法写入一个名为pic_performanc ...

  9. Java中的图像锐化操作

    ** Java中的图像锐化操作 ** 一.该图像锐化的思想: 本文的图像锐化是将图像中的R,G,B的值分别从原图像中提出,然后将分别将这三个R,G,B的值分别与卷积核进行卷积,最终再将最后的三个卷积的 ...

最新文章

  1. nginx和mysql链接_nginx转发mysql连接
  2. nginx无法启动异常
  3. struts中select标签的使用
  4. C语言再学习 -- Stack Overflow(堆栈溢出)
  5. 请你简单介绍一下ArrayList和LinkedList的区别及大数据量情况下的插入效率对比
  6. JAVA开发者大会-Spring Cloud网关分享
  7. Flutter Web:Shadow Root问题
  8. bind merge r 和join_[R] 制作梅西和C罗进球数的quot;追赶动画quot; - ggplot2 + gifski
  9. 【实验1】——脉冲测距
  10. azure web应用部署_使用Visual Studio Code将Python应用程序部署到Azure Functions
  11. 软件设计方案说明书模板
  12. 关于/etc/login.defs
  13. 下载加速小妙招,我不允许你不知道
  14. 但行好事 莫问前程(五月)
  15. [Erlang危机](3.0)过载处理
  16. 牛顿法与拟牛顿法学习笔记(一)牛顿法
  17. u盘魔术师给服务器装系统,U盘魔术师怎么装系统 U盘魔术师USM制作PE启动盘方法...
  18. 电影TS、TC、SCR、R5、BD、HD等版本是什么意思(转)
  19. 自动化配置管理工具 SaltStack-03
  20. div style常用属性介绍及使用示例

热门文章

  1. 【数据分析】- 归因分析
  2. 基于opencv的一种快速有效椭圆检测方法
  3. 怎么找到当地供应商_开超市如何找供应商?
  4. 特征提取算法--ORB
  5. Java,SQL 截取字符串substring
  6. 防止按钮重复点击的解决方案与思路
  7. JMeter学习-006-JMeter 断言
  8. 建模示范视频EA-027/智慧公寓系统试看片段-视频+图片版
  9. 如何判断一个网页是不是动态页面
  10. Windows下查找网络硬盘、断开网络硬盘