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 self,cls,decorator的理解
Jul 13 Python
使用python绘制人人网好友关系图示例
Apr 01 Python
Python在线运行代码助手
Jul 15 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
基于pip install django失败时的解决方法
Jun 12 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
python统计中文字符数量的两种方法
Jan 31 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
Python竟然能剪辑视频
May 25 Python
Python中的程序流程控制语句
Feb 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文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
PHP 验证登陆类分享
2015/03/13 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
js window.event对象详尽解析
2009/02/17 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Python坐标线性插值应用实现
2019/11/13 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python实现人机五子棋
2020/03/25 Python
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
什么是属性访问器
2015/10/26 面试题
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js