澄清np.唯一()图像处理中的值

2024-04-26 20:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

愚蠢的问题。我有一个图像,我通过python使用cv2库以灰度方式读取它,如下所示:

image_gray = cv2.imread(image, cv2.IMREAD_GRAYSCALE)

当我试图在这个图像中找到不同的颜色值时,我使用以下方法:

np.unique(image_gray.flatten())

返回[58255]。这些数字代表什么?如何获得等效的RGB值?你知道吗


Tags: 方法图像image颜色np方式数字cv2
1条回答
网友
1楼 · 发布于 2024-04-26 20:23:01

当用cv2.IMREAD_GRAYSCALE在opencv2中加载图片时,指定要用灰度值加载图像。这样,图像的每个像素的值将介于0(黑色)和255(白色)之间。你知道吗

在这里,执行np.unique(image_gray.flatten())将为您提供在图像中找到的所有唯一像素值。从结果来看,图片中只有两种颜色,因为[58, 255]是长度为2的列表。你知道吗

为了直接用RGB值而不是灰度值加载图片,您可以执行以下操作:

# this will load the picture with colors
image = cv2.imread("input.png", cv2.IMREAD_COLOR)

现在,如果您希望在将图片加载为灰度图像后获得相应的RGB值,可以执行以下操作:

# this would only convert the grayscale image to a color one
# if the image was loaded with cv2.IMREAD_GRAYSCALE, it will remain gray
# but the array will have RGB values instead of grayscale values
image_rgb = cv2.cvtColor(image_gray,cv2.COLOR_GRAY2RGB)

现在,请注意,如果要获取给定图片中像素所获取的所有唯一RGB值,需要执行以下操作:

np.unique(image.reshape(-1, image.shape[2]), axis=0)

这是因为展平阵列也会展平RGB值。在这里,我们重塑图片以仅展平数组的行和列。你知道吗

相关问题 更多 >