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使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
详解Python编程中time模块的使用
Nov 20 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
python文件写入write()的操作
May 14 Python
Python实现使用request模块下载图片demo示例
May 24 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
Python参数类型以及常见的坑详解
Jul 08 Python
利用python实现AR教程
Nov 20 Python
pytorch查看通道数 维数 尺寸大小方式
May 26 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php array_flip() 删除数组重复元素
2009/01/14 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
php操作xml
2013/10/27 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python 生成图形验证码的方法示例
2018/11/11 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
python 实现按对象传值
2019/12/26 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
质量提升方案
2014/06/16 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
捐助倡议书
2015/01/19 职场文书
琅琊山导游词
2015/02/05 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers