Opencv读取的图片的矩阵的维度与图片宽高对应关系

举例分析
假如用分辨率为98*148的树形图片

当我们用opencv读取该图片时,返回的图片的shape是(148, 98, 3)

import cv2
img = cv2.imread(img_path)
print(img.shape)

(148, 98, 3)
1
2
3
4
5
由此可见图片的返回的图片的shape的格式是(h,w,c)

148表示有148行,可以表达为图片的高 height
98表示图片有98列,可以表达为图片的宽 width
c表示 图片的通道数,彩色图片是三通道的,每个通道表示图片的一种颜色(RGB),对于OpenCV读取到的图片的通道顺序是BGR

不同的读取图像的工具,读取到的图像的通道的颜色顺序是不一样的

opencv读进来的图片已经是一个numpy矩阵了,彩色图片维度是(高度,宽度,通道数)。数据类型是uint8;
opencV读取的格式:BGR (opencv对于读进来的图片的通道排列是BGR,而不是主流的RGB!谨记!)
opencV存储的格式:BGR
PIL的读取和存储格式是RGB
PIL读进来的图像是一个对象,而不是我们所熟知的numpy 矩阵
针对PIL读进来的图像是一个对象,那么如何才能将读进来的图片转为矩阵呢,方法如下:
from PIL import Image
import numpy as np
img1 = Image.open(‘d:/picture/cat.jpg’)
arr = np.array(img1)
在深度学习的时候,推理的前处理,一般都是将RGB或BGR图像进行转变为CHW的格式

PIL和Skimage读取图像是HWC格式,- opencv读取图像是也是HWC的格式
CHW更适合CNN:因为网络是一个通道一个通道的对图像做卷积,提取feature,希望在访问同一个channel的像素是连续的,一般存储选用CHW
,这样在做CNN的时候,在访问内存的时候就是连续的了,比较方便;
yolov5读取图片处理
yolov5在读取图片事,代码如下

img = cv2.imread(path)
img = img[:, :, ::-1].transpose(2, 0, 1)  # BGR to RGB
1
2
代码中的“ ::-1”是将BGR转换成RGB,代码中的transpose(2, 0, 1) 是将HWC转换成CHW格式
转载:Opencv读取的图片的矩阵的维度与图片宽高对应关系_程序之巅的博客-CSDN博客_opencv读取的图像维度

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值