python - I want to create lists in order to split to puzzle an image(Python image processing)
问题描述
i have an image (size: X x Y)
i want to split image.
original image :
spliting and changing lists:
if i split 2*2, lists will be following
num is split number 2,3 or more
list1 = img[0:round(x/num), 0:round(y/num)]
list2 = img[0:round(x/num), round(y/num):y]
list3 = img[round(x/num):x, 0:round(y/num)]
list4 = img[round(x/num):x, round(y/num):y]
if i split 3*3, lists will be
list1 = img[0:round(x/num), 0:round(y/num)]
list2 = img[round(x/num):round(2*x/num), 0:round(y/num]
list3 = img[round(2*x/num):x, 0:round(y/num)]
list4 = img[0:round(x/num), round(y/num):round(2*y/num)]
list5 = img[round(x/num):round(2*x/num), round(y/num):round(2*y/num)]
list6 = img[round(2*x/num):x, round(y/num):round(2*y/num)]
list7 = img[0:round(x/num), round(2*y/3):y]
list8 = img[round(x/num):round(2*x/num), round(2*y/3):y]
list9 = img[round(2*x/num):x, round(2*y/3):y]
for 4*4 lists will be 16
how can i write code in loop for this question?
解决方案
图像可以表示为每种基本颜色(红、绿、蓝)的二维数组列表。例如,您可以使用以下方式加载图像scipy.misc.imread
:
from scipy.misc import imread
img_rgb = imread("sample.jpg")
对于每个颜色数组,您可以连续使用np.array_split
(NumPy 函数)沿给定维度拆分数组,如下
def split_img(img, num):
# Here, img is a 2D array
img_split = [ np.array_split(A, num, axis = 0) for A in np.array_split(img, num, axis = 1) ]
# Flatten the output into a list of 2D arrays
return [ item for sublist in img_split for item in sublist ]
num = 4
img_r_split = split_img(img_rgb[:,:,0], num)
img_g_split = split_img(img_rgb[:,:,1], num)
img_b_split = split_img(img_rgb[:,:,2], num)
最后,您必须将拆分的颜色数组收集到一个 RGB 数组中,如下
img_rgb_split = [ np.stack((r, g, b), axis = -1) for r, g, b in zip(img_r_split, img_g_split, img_b_split) ]
例如,您可以使用它plt.imshow
来显示您的分割图像
plt.imshow(img_rgb_split[0])
推荐阅读
- python - 我可以为 Django 模板使用我自己的文件扩展名并仍然包含 django.contrib.auth.urls 吗?
- arrays - 我正在尝试使用选择排序算法在 python 中对这个数组进行排序,但它没有给出所需的输出。我究竟做错了什么?
- iis - IIS 限制对单独文件的访问
- reactjs - 为什么我需要使用 React Routes 在 Web 地址栏中按 Enter 键?
- git - git 在从 master 分支后将一些“旧”更改带到新分支
- python - 使用 scipy (curve_fit) 拟合包含总和的函数时出现问题
- java - 这 == 和 = 运算符在带有布尔表达式的 if 子句中一起使用时如何在 java 中工作?
- less - 创建 Less.js 命名空间以解决样式表之间的冲突
- pine-script - 移动平均线旁边的标签(文本)
- reactjs - 在反应 i18next 中将参数传递到命名空间