python numpy 显示图像阵列的实例


Posted in Python onJuly 02, 2018

每次要显示图像阵列的时候,使用自带的 matplotlib 或者cv2 都要设置一大堆东西,subplot,fig等等,突然想起 可以利用numpy 的htstack() 和 vstack() 将图片对接起来组成一张新的图片。因此写了写了下面的函数。做了部分注释,一些比较绕的地方可以自行体会。

大致流程包括:

1、输入图像列表 img_list

2、show_type : 最终的显示方式,输入为行数列数 (例如 show_type=22 ,则最终显示图片为两行两列)

3、basic_shape, 图片resize的尺寸。

def image_show( img_list, show_type, basic_size=[300,500]):
 '''
  img_list contains the images that need to be stitched,
  the show_typ contains the final shape of the stitched one, ie, 12 for 1 row 2 cols.
  basic_size : all input image need to be reshaped first. 
 
 '''
 # reshap row and col number. 
 n_row, n_col = basic_size
 #print n_row,n_col
 
 # num of pixels need to be filled vertically and horizontally.
 h_filling = 10
 v_filling = 10
 
 
 # image resize. 
 resize_list=[]
 for i in img_list:
  temp_img = cv2.resize( i, ( n_col, n_row ), interpolation = cv2. INTER_CUBIC )
  resize_list.append( temp_img )
 
 # resolve the final stitched image 's shape.
 n_row_img, n_col_img = show_type/10, show_type%10
 #print n_row_img, n_col_img
 
 # the blank_img and the image need to be filled should be defined firstly.
 blank_img= np.ones([n_row,n_col])*255
 blank_img= np.array( blank_img, np.uint8 )
 v_img= np.array( np.ones([n_row,v_filling])*255, np.uint8)
 h_img= np.array( np.ones ([ h_filling, n_col_img*n_col+(n_col_img-1)*h_filling])*255, np.uint8)
 
  
 # images in the image list should be dispatched into different sub-list
 # in each sub list the images will be connected horizontally.
 recombination_list=[]
 temp_list=[]
 n_list= len(resize_list)
 for index, i in enumerate ( xrange (n_list)):
  if index!= 0 and index % n_col_img==0 :
   recombination_list.append(temp_list)
   temp_list = []
   if len(resize_list)> n_col_img:
    pass
   else:
    recombination_list.append(resize_list)
    break
  temp_list.append( resize_list.pop(0))
 if n_list== n_col_img:
  recombination_list.append(temp_list)
 #print len(temp_list)
 #print temp_list
 
 
 # stack the images horizontally.
 h_temp=[]
 for i in recombination_list:
  #print len(i)
  if len(i)==n_col_img:
   
   temp_new_i=[ [j,v_img] if index+1 != len(i) else j for index, j in enumerate (i) ]
   new_i=[ j for i in temp_new_i[:-1] for j in i ]
   new_i.append( temp_new_i[-1])
   h_temp.append(np.hstack(new_i))
  else:
   
   add_n= n_col_img - len(i)
   for k in range(add_n):
    i.append(blank_img)
    
   temp_new_i=[ [j,v_img] if index+1 != len(i) else j for index, j in enumerate (i) ]
   new_i=[ j for i in temp_new_i[:-1] for j in i ]
   new_i.append( temp_new_i[-1])
   
   h_temp.append(np.hstack(new_i))
   
   
 #print len(h_temp)
 #print h_temp
   
 temp_full_img= [ [j, h_img ] if index+1 != len(h_temp) else j for index, j in enumerate(h_temp) ]
 if len(temp_full_img) > 2:
  full_img= [ j for i in temp_full_img[:-1] for j in i ]
  full_img.append(temp_full_img[-1])
 else:
  full_img= [ j for i in temp_full_img for j in i ]
  #full_img.append(temp_full_img[-1])
  
 
 
 if len(full_img)>1:
  return np.vstack( full_img) 
 else:
  return full_img

最终输入情况和结果如下图:

第一组结果图:自行看输入

python numpy 显示图像阵列的实例

第二组结果图。

python numpy 显示图像阵列的实例

以上这篇python numpy 显示图像阵列的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程之读取网站根目录实例
Sep 30 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
Python使用正则实现计算字符串算式
Dec 29 Python
Python3监控疫情的完整代码
Feb 20 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 Python
Python实现图片拼接的代码
Jul 02 #Python
python远程连接服务器MySQL数据库
Jul 02 #Python
对Python 数组的切片操作详解
Jul 02 #Python
python读取LMDB中图像的方法
Jul 02 #Python
python读写LMDB文件的方法
Jul 02 #Python
对numpy中的数组条件筛选功能详解
Jul 02 #Python
python matlibplot绘制多条曲线图
Feb 19 #Python
You might like
五款PHP代码重构工具推荐
2014/10/14 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
php经典趣味算法实例代码
2020/01/21 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
简洁的十分钟Python入门教程
2015/04/03 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
python实现杨辉三角思路
2017/07/14 Python
python在每个字符后添加空格的实例
2018/05/07 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
自荐信格式范文
2013/10/07 职场文书
机电一体化自荐信
2013/12/10 职场文书
公司保密承诺书
2014/03/27 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
小学新课改心得体会
2016/01/22 职场文书
Python实现抖音热搜定时爬取功能
2022/03/16 Python
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript