For academic purposes I want to reinvent Blue Green Red to Grayscale function in Python. I am new to Python so I believe my code below can still be optimized.
import cv2
import numpy as np
data = np.array([[[255, 0, 0], [0, 255, 0], [0, 0, 255]], [
[0, 0, 0], [128, 128, 128], [255, 255, 255], ]], dtype=np.uint8)
rows = len(data)
cols = len(data[0])
grayed = []
for i in range(rows):
row = []
for j in range(cols):
blue, green, red = data[i, j]
gray = int(0.114 * blue + 0.587 * green + 0.299 * red)
row.append(gray)
grayed.append(row)
grayed = np.array(grayed, dtype=np.uint8)
print(data)
print(grayed)
wndData = "data"
wndGrayed = "greyed"
cv2.namedWindow(wndData, cv2.WINDOW_NORMAL)
cv2.imshow(wndData, data)
cv2.namedWindow(wndGrayed, cv2.WINDOW_NORMAL)
cv2.imshow(wndGrayed, grayed)
cv2.waitKey()
Could you review my code above and make it much better?
0.114 * blue + 0.587 * green + 0.299 * red
grey? I would expect grey to beblue/3 + green/3 + red/3
\$\endgroup\$