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正常时间和unix时间戳相互转换的方法
Apr 23 Python
解析Python中的异常处理
Apr 28 Python
以windows service方式运行Python程序的方法
Jun 03 Python
python 系统调用的实例详解
Jul 11 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
Python在for循环中更改list值的方法【推荐】
Aug 17 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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的header和asp中的redirect比较
2006/10/09 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
Vue组件系列开发之模态框
2019/04/18 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
Python Tkinter GUI编程入门介绍
2015/03/10 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
Python读写zip压缩文件的方法
2018/08/29 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python 两种方法删除空文件夹
2020/09/29 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
应届生污水处理求职信
2013/11/06 职场文书
一年级班主任寄语
2014/01/19 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
秦兵马俑导游词
2015/02/02 职场文书
《开国大典》教学反思
2016/02/16 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
Linux安装Docker详细教程
2022/07/07 Servers