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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
Django中使用Celery的方法示例
Nov 29 Python
Python多线程thread及模块使用实例
Apr 28 Python
python 获取字典键值对的实现
Nov 12 Python
使用Python的开发框架Brownie部署以太坊智能合约
May 28 Python
彻底弄懂Python中的回调函数(callback)
Jun 25 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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实现的多文件上传类及用法示例
2016/05/06 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
python 实现文件的递归拷贝实现代码
2012/08/02 Python
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python购物车程序简单代码
2018/04/18 Python
python保存文件方法小结
2018/07/27 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
python实现词法分析器
2019/01/31 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python网页解析器使用实例详解
2020/05/30 Python
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
工伤调解协议书
2016/03/21 职场文书
多表查询、事务、DCL
2021/04/05 MySQL