浅谈python图片处理Image和skimage的区别


Posted in Python onAugust 04, 2019

做cnn的难免要做大量的图片处理。由于接手项目时间不长,且是新项目,前段时间写代码都很赶,现在稍微总结(恩,总结是个好习惯)。

1,首先安装python-Image和python-skimage、python-matplotlib。

  简单代码:

import Image as img
import os
from matplotlib import pyplot as plot
from skimage import io,transform
import argparse
 
def show_data(data):
  fig = plot.figure()
  ax = fig.add_subplot(121)
  ax.imshow(data, cmap='gray')
  ax2 = fig.add_subplot(122)
  ax2.imshow(data)
  plot.show()
if __name__ == "__main__":
  parse = argparse.ArgumentParser()
  parse.add_argument('--picpath', help = "the picture' path")
  args = parse.parse_args()
  img_file1 = img.open(args.picpath)#Image读图片
  one_pixel = img_file1.getpixel((0,0))[0]
  print "picture's first pixe: ",one_pixel 
  print "the picture's size: ", img_file1.size#Image读出来的size是高宽
  show_data(img_file1)
  img_file2 = io.imread(args.picpath)#skimage读图片
  show_data(img_file2)
  print "picture's first pixel: ", img_file2[0][0][0]
  print "the picture's shape: ", img_file2.shape#skimage读出来的shape是高,宽, 通道

调用及输出:

浅谈python图片处理Image和skimage的区别

其实Image读出来的是PIL什么的类型,而skimage.io读出来的数据是numpy格式的。如果想直接看Image和skimage读出来图片的区别,可以直接输出它们读图片以后的返回结果。

2.Image和skimage读图片:

img_file1 = img.open(args.picpath)
img_file2 = io.imread(args.picpath)

3.读图片后数据的大小:

print "the picture's size: ", img_file1.size
print "the picture's shape: ", img_file2.shape

4.得到像素:

one_pixel = img_file1.getpixel((0,0))[0]
img_file2[0][0][0]

分析:

1.从3的输出可以看出img读图片的大小是图片的(height,width);

skimage的是(height,width, channel)[这也是为什么caffe在单独测试时要要在代码中设置:transformer.set_transpose('data',(2,0,1)),因为caffe可以处理的图片的数据格式是(channel,height,width),所以要转换数据啊]

2.img读出来的图片获得某点像素用getpixel((h,w))可以直接返回这个点三个通道的像素值

skimage读出来的图片可以直接img_file2[0][0][0]获得,但是一定记住它的格式,并不是你想的(channel,height,width)

关于matplotlib简单的画图请关注下篇~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中函数的参数定义和可变参数用法实例分析
Jun 04 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
python3 实现对图片进行局部切割的方法
Dec 05 Python
Python3中exp()函数用法分析
Feb 19 Python
python使用threading.Condition交替打印两个字符
May 07 Python
python中的句柄操作的方法示例
Jun 20 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
3种python调用其他脚本的方法
Jan 06 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 #Python
python opencv 简单阈值算法的实现
Aug 04 #Python
Python pandas用法最全整理
Aug 04 #Python
python匿名函数用法实例分析
Aug 03 #Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 #Python
Python适配器模式代码实现解析
Aug 02 #Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 #Python
You might like
Zend的MVC机制使用分析(一)
2013/05/02 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
PHP中的表达式简述
2016/05/29 PHP
php微信开发之关注事件
2018/06/14 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python利用lxml读写xml格式的文件
2017/08/10 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
学生党员思想汇报
2013/12/28 职场文书
小学生自我评价范文
2014/01/25 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
超市活动计划书
2014/04/24 职场文书
教室标语大全
2014/06/21 职场文书
死亡诗社观后感
2015/06/05 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
酒店员工管理制度
2015/08/05 职场文书
Java详细解析==和equals的区别
2022/04/07 Java/Android
vue里使用create, mounted调用方法
2022/04/26 Vue.js