Python划分n宫格

Python划分n宫格,第1张

Python划分n宫格

只用到了numpy和matplotlib.pyplot和PIL,且是居中裁剪。

import math
import random
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
image = Image.open('173.jpg')
print("请输入要获得的宫格数:")
n=eval(input())
x=int(math.sqrt(n))
b=int(n/x)
image = np.array(image)
plt.imshow(image)
plt.show()
H,W=image.shape[0],image.shape[1]
height=int(H//x)
width=int(W//b)
rem_h=H%height
rem_w=W%width
rem_hr=int(rem_h//2)
rem_wr=int(rem_w//2)
a=[]
for h in range(rem_hr,H-rem_hr-1,height):#居中裁剪
    for w in range(rem_wr,W-rem_wr-1,width):
        tmp=image[h:h+height,w:w+width,:]
        a.append(tmp)
l=random.sample(list(range(n)), n)#随机生成一个列表,代表我拼接的图片块是随机的
r=random.sample(list(range(int(x))), int(x))
co=[]
for i in range(0,len(l),int(b)):
    tmp=a[l[i]]
    for j in range(1,int(b)):
        tmp=np.concatenate((tmp,a[l[i+j]]),axis=0)
    co.append(tmp)
rw=co[r[0]]
for i in range(1,int(x)):
    rw=np.concatenate((rw,co[r[i]]),axis=1)
plt.imshow(rw)
plt.show()

总结

n宫格划分我是利用随机数进行划分的,每一次的效果都不一样。
拼接主要用到了numpy的concatenate函数。

原图

结果

这是25宫格的一个划分

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/869305.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存