在Python中将RGB像素转换为灰度。没有matplot或PIL

时间:2018-11-30 03:28:24

标签: python python-3.x opencv rgb grayscale

我很想找出一项家庭作业。我们在opencv上只花了两天的演讲时间,所以我对此一无所知。

任务是使用亮度公式0.02126 * R + 0.7152 * G + 0.0722 * B将RGB img转换为灰度

因此,每个像素的类型应与原始图像相同。我们不允许使用matplot或PIL,这是我看到的很多尝试弄清楚的事情。

我现在的代码仅输出灰色图像。因此,它不是灰色SCALE,而是灰色。我很迷路,请帮助。

import cv2
import numpy as np
def togray():
    img = cv2.imread("fruits.jpg")
    cv2.imshow('Original',img)
    height, width, channels = img.shape
    img2 = np.ndarray (shape=(height,width,))
    for i in range(height):
        for j in range(width):
            img2[i,j]=(0*0.2126 + 0.7152*1 + 0.0722*2)

    cv2.imshow('Grayscale',img2)
    cv2.waitKey(0)

togray()

1 个答案:

答案 0 :(得分:2)

尝试做package Package; class Pawn extends Piece { Pawn() { super("Pawn", "♙", "\u265F"); } } class Knight extends Piece { Knight() { super("Knight", "\u2658", "\u265E"); } } class Bishop extends Piece { Bishop() { super("Bishop", "\u2657", "\u265D"); } } class Rook extends Piece { Rook() { super("Rook", "\u2656", "\u265C"); } } class King extends Piece { King() { super("King", "\u2654", "\u265A"); } } class Queen extends Piece { Queen() { super("Queen", "\u2655", "\u265B"); } }

Julien的评论是错误的,原因有两个:(i)在opencv中,图像的形状为addPiecesToBoard()。这就解释了为什么索引为您提供了一个较小的框。 (ii)opencv通道是BGR,而不是RGB,因此您需要像在这里那样交换2和0索引。 (仅考虑R和B项的贡献,实际结果不应有太大变化。