《用python的话,一定要试着使用的函数》第九集。(CHW转HWC或任意格式,rgb转gbr或任意格式)

Posted 西瓜6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《用python的话,一定要试着使用的函数》第九集。(CHW转HWC或任意格式,rgb转gbr或任意格式)相关的知识,希望对你有一定的参考价值。

《用python的话,一定要试着使用的函数》专栏的第九集。这集是关于python的图像处理中的常用的格式转换。
这个专栏会确保短小精悍,学得快,看了不后悔。

用python的话,一定要试着使用的函数

第九集的主角是numpy里面的transpose 及img[:,:,::-1],img[:,:,[x,y,z]],cv2.cvtColor。附带会提一下img[::-1,:,:]、img[:,::-1,:]。

这有什么用?

transpose可以先把CHW/HWC等任意格式 转成HWC/CHW等任意格式

img[:,:,::-1],img[:,:,[x,y,z]],cv2.cvtColor这三个可以把rgb等任意格式转成gbr等任意格式

怎么装?

pip install numpy

怎么用?

先举例transpose吧

import numpy as np

c=3
h=360
w=640
a=np.ones([c,h,w])
print(a.shape)
b=a.transpose(1, 2, 0)
print(b.shape)

结果是

(3, 360, 640)
(360, 640, 3)

如图

可以理解为,c的原本位置是0,h的原本位置是1,w的原本位置是2。
transpose(1, 2, 0)则理解为把原先1位置上的h放到第一,原先2位置上的w放到第二,原先0位置上的h放到第三。

接着举例img[:,:,::-1],img[:,:,[x,y,z]],cv2.cvtColor这三个

img[:,:,::-1]是指如果原先是rgb,那么倒着排一下就是bgr。
cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB),这个很好理解了,直接就是BGR2RGB。
而img[:,:,[x,y,z]],其中需要将0,1,2三个数根据需要分给x,y,z,和transpose的理解方式一样。
如果不清楚可以运行下面的代码。包你清楚明白。

import numpy as np
import cv2
# 西瓜6写的(转载/爬虫)记得声明
c=3
h=360
w=640
img_bgr=np.ones([h,w,c])
# 西瓜6写的(转载/爬虫)记得声明
b,g,r=cv2.split(img_bgr)
g=2*g
r=3*r
img_bgr=cv2.merge((b,g,r))
#模拟三通道图片img_bgr,b里全为1,g里全为2,r里全为3。
#方法一:img[:,:,::-1]
img_rgb=img_bgr[:,:,::-1]
#方法二:img[:,:,[x,y,z]]
img_021=img_bgr[:,:,[0,2,1]]
img_120=img_bgr[:,:,[1,2,0]]
img_102=img_bgr[:,:,[1,0,2]]
img_201=img_bgr[:,:,[2,0,1]]
img_210=img_bgr[:,:,[2,1,0]]
#方法三 cv2.cvtColor
img_bgr=img_bgr.astype("uint8") #不进行这一步可能会报错
img_cv_rgb=cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)

结果如图,模拟了一个三通道图片数据img_bgr,b里全为1,g里全为2,r里全为3。
因此,你也可以看作img_bgr[:,:,::-1]等同于cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)等同于img_bgr[:,:,[2,1,0]]。

注:稍微给新手提醒的一点就是cv2.cvtColor可能会要求输入的数据类型。

附带说一下img[::-1,:,:]、img[:,::-1,:]

img[::-1,:,:] ,如果数据是[h,w,c],则是竖直翻转。
img[:,::-1,:],如果数据是[h,w,c],则是水平翻转。
理解思路同img[:,:,::-1]。

结束语

嘿嘿,很好用的,有帮助就点个赞和关注咯。感谢各位。

以上是关于《用python的话,一定要试着使用的函数》第九集。(CHW转HWC或任意格式,rgb转gbr或任意格式)的主要内容,如果未能解决你的问题,请参考以下文章

《用python的话,一定要试着使用的函数》第九集。(CHW转HWC或任意格式,rgb转gbr或任意格式)

《用python的话,一定要试着使用的函数》第九集。(CHW转HWC或任意格式,rgb转gbr或任意格式)

《用python的话,一定要试着使用的函数》第六集。(psutil:python的系统监控)

《用python的话,一定要试着使用的函数》第七集。(time:python的时间访问和转换)

《用python的话,一定要试着使用的函数》第八集。(netron:超简单的神经网络模型可视化工具)

《用python的话,一定要试着使用的函数》第八集。(netron:超简单的神经网络模型可视化工具)