[Python图像处理]三.获取图像属性及通道处理

获取图像属性

1: 形状-shape:    通过shape关键字获取图像的形状,返回包含行数、列数、通道数的元祖。其中灰度图像返回行数和列数,彩色图像返回行数、列数和通道数

import cv2
img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
# 返回行数,列数,通道数
print(img.shape)   # (515, 425, 3)

2:像素数目-size: 通过size关键字获取图像的像素数目,其中灰度图像返回行数 * 列数,彩色图像返回行数 * 列数 * 通道数

import cv2
img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
print(img.size)  # 656625

3:图像类型-dtype: 通过dtype关键字获取图像的数据类型,通常返回uint8

import cv2
img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
# 获取图像类型, 通常返回uint8
print(img.dtype)    # uint8

图像通道处理

1: 通道拆分: OpenCV读取的彩色图像由B、G、R三原色组成,可以通过下面代码获取不同的通道.(b=img[位置参数, 0]  g=img[位置参数, 1] r=img[位置参数, 2])

借助split()函数拆分通道

import cv2
img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
# 拆分通道
b, g, r = cv2.split(img)
cv2.imshow("B", b)
cv2.imshow("G", g)
cv2.imshow("R", r)
cv2.waitKey(0)
cv2.destroyAllWindows()

2:通道合并: 图像通道合并主要调用merge()函数实现(m = cv2.merge([r, g, b]))

import cv2
img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
b, g, r = cv2.split(img)
m = cv2.merge([r, g, b])
cv2.imshow("Demo", m)

可以修改通道之后再合并

import cv2
import numpy as np
img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
rows, cols, chn = img.shape
b1 = cv2.split(img)[0]
# G, R通道设置为0,
g1 = np.zeros((rows, cols), dtype=img.dtype)
r1 = np.zeros((rows, cols), dtype=img.dtype)
m1 = cv2.merge([b1, g1, r1])
cv2.imshow("Demo1", m1)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果如下:

转自:https://blog.csdn.net/Eastmount/category_7912787.html

原文地址:https://www.cnblogs.com/zhouzetian/p/12860084.html