关于python:opencv将RGB图像灰度化

42次阅读

共计 712 个字符,预计需要花费 2 分钟才能阅读完成。

1. 导入测试图片并创立二维图片数组

img = cv2.imread("text.jpg")
h, w = img.shape[:2]
img1 = np.zeros((h,w),dtype=np.uint8)

测试图片如下图:

2. 个别灰度化

    for i in range(h):
        for j in range(w):
            img1[i,j] = img[i,j][0] / 3 + img[i,j][1] / 3 + img[i,j][2] / 3

通过对 RGB 彩色图片三通道的灰度值求均值能失去那一个像素的个别灰度值,失去个别灰度化图片:

3. 最大灰度化

for i in range(h):
        for j in range(w):
            img1[i,j] = max(img[i,j][0], img[i,j][1], img[i,j][2])

取三种色彩亮度的最大值作为灰度图的亮度:

4. 最小灰度化

for i in range(h):
        for j in range(w):
            img1[i,j] = min(img[i,j][0], img[i,j][1], img[i,j][2])

取三种色彩亮度的最小值作为灰度图的亮度:

5. 加权均匀灰度化

for i in range(h):
        for j in range(w):
            img1[i,j] = img[i,j][0] * 0.1 + img[i,j][1] * 0.6 + img[i,j][2] * 0.3

这是一个蓝灰度占比 0.1, 绿色灰度占比 0.6,红色灰度占比 0.3 的加权均匀灰度图:

6. 二值化

x = img[i,j][0] / 3 + img[i,j][1] / 3 + img[i,j][2] / 3
if 50 <= x <= 175:
    img1[i,j] = 255
else:
    img1[i, j] = 0

使灰度大于 50 小于 175 的像素灰度设置为白,其余灰度值的像素设置为黑:

正文完
 0