如何在不使用 cv2.cvtColor() 的情况下将 3 通道图像转换为 1 通道图像?
How to convert 3 channeled image to 1 channeled image without using cv2.cvtColor()?
因此,有人要求我使用每个像素的加权平均值将 BGR 图像转换为 GRAYSCALE。
img = cv2.imread('..\Images\horse.jpg',-1)
height = img.shape[0]
width = img.shape[1]
gray = img.copy()
for x in range(img.shape[1]):
for y in range(img.shape[0]):
gray[y][x]= (0.11 * img[y][x][0] + 0.6 * img[y][x][1] + 0.3 * img[y][x][2])
print(gray)
print(gray.shape)
cv2.imshow('gray',gray)
cv2.waitkey(0)
生成图像的形状:
(404, 640, 3)
应该是单通道图像吧?
结果显示的图像是 GRAYSCALE,但它仍然是 3 通道图像,任何人都可以帮助我吗?
原因很简单,出现这种情况是因为你在开头复制了整个img
,它有三个通道。您只需要像这样复制一个频道:
gray = img[:, :, 0].copy()
因此,有人要求我使用每个像素的加权平均值将 BGR 图像转换为 GRAYSCALE。
img = cv2.imread('..\Images\horse.jpg',-1)
height = img.shape[0]
width = img.shape[1]
gray = img.copy()
for x in range(img.shape[1]):
for y in range(img.shape[0]):
gray[y][x]= (0.11 * img[y][x][0] + 0.6 * img[y][x][1] + 0.3 * img[y][x][2])
print(gray)
print(gray.shape)
cv2.imshow('gray',gray)
cv2.waitkey(0)
生成图像的形状:
(404, 640, 3)
应该是单通道图像吧? 结果显示的图像是 GRAYSCALE,但它仍然是 3 通道图像,任何人都可以帮助我吗?
原因很简单,出现这种情况是因为你在开头复制了整个img
,它有三个通道。您只需要像这样复制一个频道:
gray = img[:, :, 0].copy()