关注公众号“轻松学编程”了解更多。

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. %matplotlib inline
  1. dog = plt.imread(\'./img/金毛.jpg\')
  2. plt.imshow(dog)

这里写图片描述

  1. dog.shape

这里写图片描述
图片高800,宽1280。

  1. #隔30行30列取一个像素点
  2. #新数组行数:800/30 = 27(向上取整)
  3. #新数组列数:1280/30 = 43(向上取整)
  4. dog2 = dog[::30,::30]
  5. plt.imshow(dog2)
  6. print(dog2.shape)

这里写图片描述

新图像大小为27*43,。由于每个像素点都是从原图像中抽取的,然后再组成新的图像,所以看上去就像是打上了马赛克,有些部分看不清楚。

  1. #从原图像中截取头部像素点
  2. head = dog[40:620,400:900]
  3. plt.imshow(head)
  4. print(head.shape)

这里写图片描述

  1. #从头部图像中按比例抽取一部分像素点
  2. head2 = head[::30,::30]
  3. plt.imshow(head2)

这里写图片描述

  1. head2.shape

这里写图片描述

把打了马赛克的头部拼接到原图像中。

头部截取点:

head = dog[40:620,400:900]

行:40到620

列:400到900

  1. #复制一个新的图像
  2. dog_m = dog.copy()
  3. #打了马赛克的头部图像的行数
  4. for i in range(20):
  5. for j in range(17): #打了马赛克的头部图像的列数
  6. # 把打了马赛克的头部图像的像素点替换原图像对应的像素点
  7. dog_m[40+i*30:70+i*30,400+j*30:430+j*30] = head2[i,j]
  8. plt.imshow(dog_m)

这里写图片描述

头部一般是圆的,下面把头部打上圆形马赛克:

  1. #圆
  2. dog_m2 = dog.copy()
  3. #头部马赛克图像形状(20,17,3) ---->(y,x)
  4. #所以圆心为 ----> (x,y)
  5. circle_dot = (9,10)
  6. #头部半径为6
  7. r = 6
  8. for i in range(20):
  9. for j in range(17):
  10. if (i-circle_dot[1])**2 + (j-circle_dot[0])**2 < r**2:
  11. dog_m[40+i*30:70+i*30,400+j*30:430+j*30] = head2[i,j]
  12. plt.imshow(dog_m)

这里写图片描述

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

公众号

赞赏码

关注我,我们一起成长~~

版权声明:本文为qsxbc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/qsxbc/p/13833763.html