OpenCV-Python学习 <二> 图像像素存储和处理

像素是图像构成的基本单位,需要清晰的了解其在opencv-python的ndarray中如何存储以及如何处理的。

在opencv-python中,通常使用numpy的ndarray来存储图片数据。cv2.imread()的返回值的数据类型即为: <class 'numpy.ndarray'>

那具体是怎么存储的呢? ndarray的各个维度和图片的长宽,BGR等是如何对应的?下面就谈一谈。

1. 像素的存储方式:

1.1:灰度图:

opencv中最小的数据类型是无符号8位数。灰度图中每个像素使用8位存储空间。取值范围0-255.

import cv2


data = cv2.imread("images/test1.webp", cv2.IMREAD_GRAYSCALE)
print("type is:",type(data))
print("Shape:", data.shape)

cv2.imshow("RGB", data)

cv2.waitKey()
cv2.destroyAllWindows()

type is: <class 'numpy.ndarray'>
Shape: (576, 1024)

获取指定图片数据,图像转变为单通道灰度图片。

可以看到,imread()返回的ndarray的shape是(576, 1024)。即(行数,列数)

这个ndarray的每个元素,就是某个像素的灰度值。

例如:

data[0][100] = 255   或者:

data[0,100] = 255

就是把第0行,第100列那个点的像素值修改为白色。

data[30] =255

则表示把第30行全变为白色。(使用到广播)

2. BGR图片:

BGR格式中,每个像素点则需要3个uint8来表示。

import cv2


#data = cv2.imread("images/test1.webp", cv2.IMREAD_GRAYSCALE)
data = cv2.imread("images/test1.webp", cv2.IMREAD_COLOR)
print("type is:",type(data))
print("Shape:", data.shape)
cv2.imshow("RGB", data)

cv2.waitKey()
cv2.destroyAllWindows()

type

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值