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实现电子词典
Apr 23 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
Python实现学生成绩管理系统
Apr 05 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
Python叠加两幅栅格图像的实现方法
Jul 05 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
Scrapy爬虫文件批量运行的实现
Sep 30 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
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
requireJS使用指南
2016/04/27 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
Python写的Socks5协议代理服务器
2014/08/06 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
Python解析多帧dicom数据详解
2020/01/13 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
逻辑链路控制协议
2016/10/01 面试题
在职研究生自我鉴定
2013/10/16 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server