浅谈tensorflow 中的图片读取和裁剪方式


Posted in Python onJune 30, 2020

一 方式1: skimage

from skimage import data, io, transform, color 
import matplotlib.pyplot as plt 
 
# io.imread 读出的图片格式是uint8,value是numpy array 类型。
image = data.coffee()
image = io.imread(dir)
 
plt.imshow(image)
plt.show()
 
io.save('1.jpg',image) #保存图像
 
image_gray = color.rgb2gray(image) #转换为灰度图像
io.save('2.jpg',image_gray)
 
# 通过transform.resize()裁剪后的图片是以 float64的格式存储的,数值的取值范围是(0~1)
image_ = transform.resize(image,(200,200))
img = image_ * 255 #将图片的取值范围改成(0~255)
img = img.astype(np.uint8) 
img = image_ * 255 #将图片的取值范围改成(0~255)
img = img.astype(np.uint8)

二、方式2:cv2

import cv2
import matplotlib.pyplot as plt 
 
# cv2.imread读出的图片格式是uint8,value也是numpy array 类型。
# 图像数据格式是以BGR的格式进行存储的。需要将存储类型改成RGB 的形式才能正常显示原图的颜色。
image=cv2.imread(dir) 
b,g,r = cv2.split(image)  #将图像通道分离开 
rgb_image = cv2.merge([r,g,b]) #以RGB的形式重新组合 
#image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 也可以使用这个函数直接转换成RGB 形式 
plt.imshow(rgb_image) 
 
# 通过cv2.resize()裁剪后的图片还是以 numpy array 的方式保存的, 数值的取值范围是(0~255)
image_cv2 = cv2.resize(rgb_image)
 
image=cv2.imread(dir) 
b,g,r = cv2.split(image)  #将图像通道分离开 
rgb_image = cv2.merge([r,g,b]) #以RGB的形式重新组合 
#image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 也可以使用这个函数直接转换成RGB 形式 
plt.imshow(rgb_image) 

# 通过cv2.resize()裁剪后的图片还是以 numpy array 的方式保存的, 数值的取值范围是(0~255)
image_cv2 = cv2.resize(rgb_image)

补充知识:tensorflow中两种读图及裁剪图片的区别(io.imread和cv2.imread)以及(transform.resize和cv2.resize)

Tensorflow中,在训练图片数据之前,需要先对图片进行预处理,读图和裁剪是最基本的两步。常见的的读图何裁剪分别有两种方式,这里小编将和大家分享下这几种方式的实现以及他们之间的区别。

一、常见的两种读图方式 io.imread() 和 cv2.imread()

1.io.imread 读出的图片格式是uint8,value是numpy array 类型。对于RGB 图片,图像数据是以RGB 的格式进行存储的。

浅谈tensorflow 中的图片读取和裁剪方式

2.cv2.imread读出的图片格式是uint8 ,value也是numpy array 类型。唯一的区别是,图像数据格式是以BGR的格式进行存储的。需要将存储类型改成RGB 的形式才能正常显示原图的颜色。特别是制作tfrecord 时,需要将图片通道改成RGB,具体代码如下。

import cv2
import matplotlib.pyplot as plt
from skimage import transform 
import numpy as np
import skimage.io as io 
 
train_dir = 'E:/TensorFlow/Project_TF/flower_tfrecord/data/test/roses/timg.jpg'
 
'''以cv2方式读取图片'''
image=cv2.imread(train_dir)
b,g,r = cv2.split(image)  #将图像通道分离开
rgb_image = cv2.merge([r,g,b]) #以RGB的形式重新组合
 
#image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 也可以使用这个函数直接转换成RGB 形式
plt.imshow(rgb_image)
 
'''以io.imread方式读取图片'''
#image = io.imread(train_dir) #读图并显示 
#plt.imshow(image)

二、常见的两种图片裁剪方式 cv2.resize() 和 transform.resize()

1.通过cv2.resize()裁剪后的图片还是以 numpy array 的方式保存的, 数值的取值范围是(0~255)

浅谈tensorflow 中的图片读取和裁剪方式

2.通过transform.resize()裁剪后的图片是以 float64的格式存储的,数值的取值范围是(0~1)。通常在制作tfrecord 数据集的过程中,我们需要将其转换成numpy array的形式,具体代码如下

'''以io.imread方式读取图片并使用transform形式裁剪图片'''
image = io.imread(train_dir) #读图并显示 
plt.imshow(image)
image =transform.resize(image, (208, 208))
img = image * 255 #将图片的取值范围改成(0~255)
img = img.astype(np.uint8) 
 
plt.imshow(img)

读图和裁剪图片在制作tfrecord数据集时,是很基础的步骤,在接下来,我还将进一步更新如何制作自己的tfrecord数据集,以及tfrecord的读取。如有谬误,还请大家斧正。

以上这篇浅谈tensorflow 中的图片读取和裁剪方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python continue语句用法实例
Mar 11 Python
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
python实现简单ftp客户端的方法
Jun 28 Python
Python日期的加减等操作的示例
Aug 15 Python
python 上下文管理器使用方法小结
Oct 10 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
Python autoescape标签用法解析
Jan 17 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
Python openpyxl模块实现excel读写操作
Jun 30 #Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 #Python
Python的控制结构之For、While、If循环问题
Jun 30 #Python
关于tensorflow softmax函数用法解析
Jun 30 #Python
基于tensorflow for循环 while循环案例
Jun 30 #Python
解析Tensorflow之MNIST的使用
Jun 30 #Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 #Python
You might like
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
会计电算化专业毕业生自荐信
2013/12/20 职场文书
工作中个人的自我评价
2013/12/31 职场文书
经销商会议欢迎词
2014/01/11 职场文书
岗位竞聘书范文
2014/03/31 职场文书
班委竞选演讲稿
2014/04/28 职场文书
技术负责人任命书
2014/06/05 职场文书
护理专业求职信
2014/06/15 职场文书
如何写早恋检讨书
2014/09/10 职场文书
放飞理想主题班会
2015/08/14 职场文书
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
Python面试不修改数组找出重复的数字
2022/05/20 Python