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有证书的加密解密实现方法
Nov 19 Python
使用Python神器对付12306变态验证码
Jan 05 Python
python安装与使用redis的方法
Apr 19 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
python 实现单通道转3通道
Dec 03 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
在notepad++中实现直接运行python代码
Dec 18 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
Python标准库pathlib操作目录和文件
Nov 20 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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
php教程之phpize使用方法
2014/02/12 PHP
php获取系统变量方法小结
2015/05/29 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
基于javaScript的this指向总结
2017/07/22 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
跟老齐学Python之再深点,更懂list
2014/09/20 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
python动态性强类型用法实例
2015/05/09 Python
Python数据操作方法封装类实例
2017/06/23 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
安装python及pycharm的教程图解
2019/10/10 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
幼师求职自荐信范文
2014/01/26 职场文书
家长对孩子评语
2014/01/30 职场文书
干部鉴定材料
2014/05/18 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
谢师宴家长致辞
2015/07/27 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js