从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)

上篇我们介绍了Tensorflow基础,https://blog.csdn.net/hao5119266/article/details/103807606

本篇距离上篇跨度较大,需要更深入的学习。期间自己学习了不少时间,包括但不限于:Numpy和Theano两个Python常用库,机器学习常用模型

值得注意的是,自Tensorflow2.0发布以来,许多教材旧代码需要更新或者被弃用,关于Tensorflow2.0的教程少之又少,所以自己重写了不少代码。我认为,对于初学者而言,直接学习TensorFlow2.0是学习Tensorflow最好的方式。

注意:如果使用1.x版本Tensorflow,下列代码可能报错。

目录

1.加载图像

2.调整图像大小

3.裁剪和填充图像

4.旋转

5.色彩调整

6.调整色调饱和度


1.加载图像

Tensorflow对图像文件的加载和对二进制文件的加载相同,只是需要解码图像。

import matplotlib.pyplot as plt
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

img=tf.io.gfile.GFile('C:/Users\Tensorflow\img\cat.jpg','rb').read()

with tf.compat.v1.Session() as sess:
   #解码图像
   img_data =tf.image.decode_jpeg(img)
   #图像矩阵
   print(sess.run(img_data))
   #显示图像
   plt.imshow(img_data.eval())

如果报错        ImportError: No module named matplotlib.pyplot

说明Tensorflow环境中未安装matplottlib,用pip安装即可

pip install  matplotlib

因为我运行的是CPU版本,所以不加下两行代码会报错:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

大概意思是你的CPU支持AVX扩展,但是你安装的TensorFlow版本无法编译使用。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

除了这个方法也可以访问下列网站重编译tensorflow,以支持AVX2。

https://github.com/lakshayg/tensorflow-build

运行结果

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第1张图片

原图像:

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第2张图片

除上诉方法外还可以用批处理方法处理多个图像。

2.调整图像大小

将600*600大小图像调整为300*300

import matplotlib
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

img=tf.io.gfile.GFile('C:/Users\Tensorflow\img\cat.jpg','rb').read()

with tf.compat.v1.Session() as sess:
   #解码图像
   img_data =tf.image.decode_jpeg(img)
   #缩放
   resized=tf.image.resize(img_data,[300,300])
   cat=np.asarray(resized.eval(),dtype='uint8')
   #显示图像
   plt.imshow(cat)

运行结果:

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第3张图片

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第4张图片

3.裁剪和填充图像

将600*600图像从中心剪裁区域大小为300*300的图像,并填充至3000*3000的图像中

import matplotlib
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

img=tf.io.gfile.GFile('C:/Users\Tensorflow\img\cat.jpg','rb').read()

with tf.compat.v1.Session() as sess:
   #解码图像
   img_data =tf.image.decode_jpeg(img)
   
   croped=tf.image.resize_with_crop_or_pad(img_data,300,300)
   padded=tf.image.resize_with_crop_or_pad(img_data,3000,3000)
   
   #显示图像
   #裁剪
   plt.imshow(croped.eval())
   plt.show()
   #填充
   plt.imshow(padded.eval())
   plt.show()

运行结果:

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第5张图片

裁剪后的图像

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第6张图片

填充后的图像

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第7张图片

4.旋转

import matplotlib
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

img=tf.io.gfile.GFile('C:/Users\Tensorflow\img\cat.jpg','rb').read()

with tf.compat.v1.Session() as sess:
   #解码图像
   img_data =tf.image.decode_jpeg(img)
   
   #旋转
   transposed=tf.image.transpose(img_data)
   
   #显示图像
   plt.imshow(transposed.eval())
   plt.show()

运行结果:

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第8张图片

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第9张图片

5.色彩调整

import matplotlib
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

img=tf.io.gfile.GFile('C:/Users\Tensorflow\img\cat.jpg','rb').read()

with tf.compat.v1.Session() as sess:
   #解码图像
   img_data =tf.image.decode_jpeg(img)
   
   #图像色彩调整
   adjusted=tf.image.random_brightness(img_data,max_delta=0.5)
   
   #显示图像
   plt.imshow(adjusted.eval())
   plt.show()

注:色彩明暗在【-max_delta,max_delta】的范围随机调整图像的亮度,所以每次运行的结果并不会一样

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第10张图片从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第11张图片

6.调整色调饱和度

import matplotlib
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

img=tf.io.gfile.GFile('C:/Users\Tensorflow\img\cat.jpg','rb').read()

with tf.compat.v1.Session() as sess:
   #解码图像
   img_data =tf.image.decode_jpeg(img)
   
   #图像色彩调整
   adjusted=tf.image.random_hue(img_data,0.1)
   
   #显示图像
   plt.imshow(adjusted.eval())
   plt.show()

注:这个结果也是随机的,不想随机改成下面的就可以

   #图像色彩调整
   adjusted=tf.image.adjust_hue(img_data,0.1)

结果:

从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第12张图片从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本)_第13张图片

相关代码会整理进自己的github中

github地址

你可能感兴趣的:(从零搭建人脸识别系统(4)Tensorflow 图像处理(适用最新Tensorflow2.0以上版本))