img[:, :, ::-1] 通俗理解

个人简介: 深度学习图像领域工作者
工作总结链接:https://blog.csdn.net/qq_28949847/article/details/128552785
             链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:
                    1.工作中常用深度学习脚本
                    2.torch、numpy等常用函数详解
                    3.opencv 图片、视频等操作
                    4.个人工作中的项目总结(纯干活)
视频讲解: 以上记录,通过B站等平台进行了视频讲解使用,可搜索 ‘Python图像识别’ 进行观看
              B站:Python图像识别
              抖音:Python图像识别
              西瓜视频:Python图像识别


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

img[:, :, ::-1] 是一种常见的图像操作方式,用于对图像进行水平翻转(即左右翻转)、上下翻转、颜色通道转换(BRR–>RGB)。

在Python中,多维数组可以使用切片语法进行索引和切片。对于三维数组或图像,第一个维度表示行,第二个维度表示列,第三个维度通常表示颜色通道(例如RGB图像中的红、绿、蓝三个通道)。

因此,img[:, :, ::-1] 表示选择所有行、所有列,并将最后一个维度倒序排列。由于在OpenCV中,最后一个维度按顺序分别代表B、G、R三个颜色通道,因此将其倒序排列相当于将R通道放在了最前面,即将BGR图像转换为RGB图像。

2. ::-1如何更通俗的理解呢

::-1这个语法可以理解为Python中的切片(slice)语法,用于对序列(例如列表、字符串、多维数组等)进行翻转或截取操作。

具体来说,如果一个切片的形式是start:stop:step,其中start表示起始位置(包括该位置),stop表示终止位置(不包括该位置),step表示步长。如果省略start,默认为0;如果省略stop,默认为序列长度;如果省略step,默认为1。

step负数时,表示从右向左遍历序列,即反向遍历。而“::”表示在两个冒号之间,没有指定start和stop,因此表示选择所有元素。最后的“-1”表示逆序遍历,即从序列末尾开始倒序遍历。

因此,[::-1]可以理解为对整个序列进行倒序遍历,返回一个新的序列,这个语法常用于反转列表、字符串以及多维数组的行、列等方向。

对于图像处理,img[:, :, ::-1]表示对多维数组的第三个维度(即通道维度)进行逆序遍历,将BGR顺序变成RGB顺序,从而实现图像色彩通道的转换。

3. 示例

import cv2

img = cv2.imread(r'002344348659-90_84-429&369_530&406-525&405_425&398_428&364_528&371-0_0_17_26_30_24_8-105-11.png')

cv2.imshow('img', img)

# b g r --> r g b
RGB = img[:, :, ::-1]

# 左右颠倒
l_r = img[:, ::-1, :]

# 上下颠倒
u_d = img[::-1, :, :]

cv2.imshow('RGB', RGB)
cv2.imshow('l_r', l_r)
cv2.imshow('u_d', u_d)
cv2.waitKey(0)

示例效果:

你可能感兴趣的:(opencv,python,计算机视觉)