tensorflow学习(三):操作图片的tf.slice()函数

http://blog.csdn.net/qq_32166627/article/details/52718612

上一篇讲的是图片的旋转与翻转,这节讲图片的截取:

用到了tensorflow中的slice()函数,

slice()函数原型为:

tf.slice(input_, begin, size, name=None)

函数有4个参数:

1,input_ :图片的矩阵输入格式。

2,begin :开始截取的位置(输入矩阵的某一点,通常是[x,y,z]的形式)

3,size :从开始截取点向各维度截取的距离(通常也是[x,y,z]的形式)

4,name :该tensor的名字。

官网例子:

# 'input' is [[[1, 1, 1], [2, 2, 2]],
#             [[3, 3, 3], [4, 4, 4]],
#             [[5, 5, 5], [6, 6, 6]]]
tf.slice(input, [1, 0, 0], [1, 1, 3]) ==> [[[3, 3, 3]]]
tf.slice(input, [1, 0, 0], [1, 2, 3]) ==> [[[3, 3, 3],
                                            [4, 4, 4]]]
tf.slice(input, [1, 0, 0], [2, 1, 3]) ==> [[[3, 3, 3]],
                                           [[5, 5, 5]]]

解读:

1,input是一个3维向量,作为tf.slice()函数的输入值(待截取的tensor)

2,第二个参数 [ 1,0,0 ] 是截取的起始点,这里就是第2行的第一个数字 “3”

3,第三个参数有3个示例,只讲(1)(3):

(1) [ 1,1,3 ] 是截取的距离,第一个维度截取1个距离,于是首先截取出[ [ [ 3,3,3 ] , [ 4,4,4 ] ] ] 这部分。第二个维度截取1个距离,那么再截出[ [ [ 3,3,3 ] ] ]这部分。第3个维度截取3个距离,即将全部3个元素截取,得到结果。

(3)[ 2,1,3 ] 第一个维度是2,于是截出来  

[  [  [ 3,3,3 ] , [ 4,4,4 ] ,

   [  [ 5,5,5 ] , [ 6,6,6 ] ] ]

这部分。第二个维度是1,再截取一个距离,得:

[  [  [ 3,3,3 ]  ,

   [  [ 5,5,5 ] ] ]

这部分。第三个维度截3个距离,得到结果,若截2个距离,得:

[  [  [ 3,3 ]  ,

   [  [ 5,5 ] ] ]

注:

(1)第3个参数中可以用-1,如[1,-1,-1],表示第2,3维度从起点一直截取到最后。

(2)多维向量不要理解为线,面,体之类的,那样的话3维以上的点就会对应错。有多少层符号"[ ]",就有多少维,从外层向内层,维度依次增加。

——————————————————————————————————————————

下面是一个截取图片的例子:

[python] view plain copy

在CODE上查看代码片派生到我的代码片

  1. import tensorflow as tf  
  2. import matplotlib.image as mpimg  
  3. import matplotlib.pyplot as plt  
  4.   
  5. # First, load the image again  
  6. filename = "MarshOrchid.jpg"  
  7. raw_image_data = mpimg.imread(filename)  
  8.   
  9. image = tf.placeholder("uint8", [None, None, 3])  
  10. slice = tf.slice(image, [1000, 0, 0], [3000, -1, -1])  
  11.   
  12. with tf.Session() as session:  
  13.     result = session.run(slice, feed_dict={image: raw_image_data})  
  14.     print(result.shape)  
  15.   
  16. plt.imshow(result)  
  17. plt.show()  

关键语句:

slice = tf.slice(image, [1000, 0, 0], [3000, -1, -1])

猜你喜欢

转载自blog.csdn.net/qq_27009517/article/details/81628486
今日推荐