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新手实现2048小游戏
Mar 31 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
Django中celery执行任务结果的保存方法
Jul 12 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python字典的常用方法总结
Jul 31 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
深入分析python 排序
Aug 24 Python
python中str内置函数用法总结
Dec 27 Python
Python预测分词的实现
Jun 18 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
python单例模式的多种实现方法
2019/07/26 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python代码能做成软件吗
2020/07/24 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
高中生学习生活的自我评价
2013/11/27 职场文书
打架检讨书300字
2014/02/02 职场文书
无毒社区工作方案
2014/05/23 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技