img[...,::-1]或者img[:,:,::-1]的作用

pytorch玩转深度学习

共 1735字,需浏览 4分钟

 ·

2021-03-10 04:04

作用是实现RGB到BGR通道的转换 (若图片一开始就是BGR的,就是实现从BGR到RGB的转换)。

对于列表img进行img[:,:,::-1]的作用是列表数组左右翻转,例如:

  1. import numpy as np


  2. a = np.arange(27).reshape(3,3,3)

  3. print(a)

  4. '''

  5. [[[ 0 1 2]

  6. [ 3 4 5]

  7. [ 6 7 8]]

  8. [[ 9 10 11]

  9. [12 13 14]

  10. [15 16 17]]

  11. [[18 19 20]

  12. [21 22 23]

  13. [24 25 26]]]

  14. '''

  15. b = a[:,:,::-1]

  16. print(b)

  17. '''

  18. [[[ 2 1 0]

  19. [ 5 4 3]

  20. [ 8 7 6]]

  21. [[11 10 9]

  22. [14 13 12]

  23. [17 16 15]]

  24. [[20 19 18]

  25. [23 22 21]

  26. [26 25 24]]]

  27. '''

可以明确看出,[:,:,::-1]的作用就是对数组进行左右翻转。那为什么对于图像而言却能实现RGB通道转换为BGR通道呢?先看一些读取图片的方法是怎么读取吧

一般有opencv(cv2)和matplotlib(plt)的读取方式:(cv2把图片读取后是把图片读成BGR形式的,plt则是读成RGB形式)

证明如下:

以一张图片为样例:

正常显示就是以RGB为格式显示的。

当我们用plt读取时:

  1. from matplotlib import pyplot as plt

  2. import cv2

  3. img_name = r'C:\Users\Administrator\Desktop\airball\val\35.jpg'

  4. img = plt.imread(img_name)

  5. print(img)

打印出来的是:

取第一个值,(129,80,73),在网上以查,颜色是深棕色的,确实跟图片的左上角是一致的:

证明plt读取图片的方式确实是以RGB的格式读取。

接着:

当执行 [:,:,::-1]后,数组会左右翻折:

  1. from matplotlib import pyplot as plt

  2. import cv2

  3. img_name = r'C:\Users\Administrator\Desktop\airball\val\35.jpg'

  4. img = plt.imread(img_name)

  5. print(img)

  6. print('-----------------------')

  7. img = img[:, :, ::-1]

  8. print(img)

可以看到(129 80 73)变成(73 80 129)。

通过网上查询(73 80 129)是什么颜色的,发现是蓝色的。

所以,如果拆测没错的话,这是后显示出来的图片应该左上角就是蓝色的,我们试试:

  1. from matplotlib import pyplot as plt

  2. import cv2

  3. img_name = r'C:\Users\Administrator\Desktop\airball\val\35.jpg'

  4. img = plt.imread(img_name)

  5. print(img)

  6. print('-----------------------')

  7. img = img[:, :, ::-1]

  8. plt.imshow(img)

  9. plt.show()

果然左上角就是蓝色的。因此,这应该是BRG格式的图片了。所以得证,[:,:,::-1]的作用就是把RGB(或BRG)转换成BGR(或者RGB)。

=============================

插一句题外话,用opencv(即cv2)读取图片,是以BGR的形式来读取的。我们用cv2的imshow()函数显示图片发现跟我们打开图片的样子一样,是因为cv2的imshow()又把BGR转回RGB再显示。但cv2确实是以BGR形式读取图片的,而plt则是以RGB形式。


浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报