基于Scikit-image将图像打马赛克

对整张图片进行打码操作,选择一个10*10的小正方形图片,然后对其像素进行随机打乱

#马赛克图片
from skimage import img_as_float
import matplotlib.pyplot as plt
from skimage import io
import random
import numpy as np
file_name='11.jpg'
img=io.imread(file_name)#读
img = img_as_float(img)#图像数据类型转换为float
img_out = img.copy()
row, col, channel = img.shape#得到图片的宽高和维度
half_patch =10#选择一个10*10的小方块,马赛克大小
#遍历,从10到(图片的宽-1-10),每次步长为(10),即横向(纵向)糊马赛克
for i in range(half_patch, row-1-half_patch, half_patch):
  for j in range (half_patch, col-1-half_patch, half_patch):
    k1 = random.random()  #用于生成一个0到1的随机符点数
    k2 = random.random()
    m=np.floor(k1*(half_patch*2 + 1))#np.floor()返回不大于输入参数的最大整数。(向下取整)
    n=np.floor(k2*(half_patch*2 + 1))
    #防止溢出
    h=int((i+m) % row)
    w=int((j+n) % col)
    #图像的长、宽打乱
    img_out[i-half_patch:i+half_patch, j-half_patch:j+half_patch, :] =img[h, w, :]
plt.figure(1)
plt.imshow(img)
plt.axis('off')#关闭坐标轴
plt.figure(2)
plt.imshow(img_out)
plt.axis('off')
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值