python中用自定义变换函数将灰度图像转换回rgb图像的问题

2024-10-04 15:32:58 发布

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

我正在处理一些RGB图像,为了实现某些功能,我必须使用一些转换值将RGB图像转换为灰度,然后在操作之后,我希望在转换值的帮助下再次将输出图像转换为RGB格式。如何达到同样的效果?在

Opencv conversioncv2.cvtColor(image, cv2.COLOR_GRAY2RGB)不会生成原始图像,因为它将采用所有3个通道的值相同,所以我应用了一个转换

我把RGB图像读作:

img=cv2.imread("image.png")

然后,我将RGB值提取为:

^{pr2}$

然后我应用变换得到的灰度图像如下:

^{3}$

如何将经过再次处理后的灰度图像转换回给定变换值的RGB?在


Tags: 图像image功能img格式rgbcv2opencv
3条回答

当你把红色、绿色和蓝色通道加在一个灰色通道中时,你在浪费信息,你无法(从数学上)推断出如何再次将一个单一的灰度值分割成多种颜色。在

根据你的图像的灰度变换,你可以把它转换成另一种灰度图像。在

从数学上讲,将灰度图像转换回RGB是不可能的。但是,您可以使用cv2.cvtColor(image, cv2.COLOR_BGR2HSV)将RGB转换为HSV空间,对{}执行灰度处理,并将结果转换回RGB。在

我想你是在尝试独立地操作频道,因为你有一些算法需要灰度图像。你可以用几种不同的方法来解决这个问题。在

那么,让我们从这幅图开始:

enter image description here

您可以在不将图像分割为其组件通道的情况下,这样做“就地”

#!/usr/bin/env python3

import cv2

# Load image
img=cv2.imread("start.png",cv2.IMREAD_COLOR)

# In-place, zero the Blue, double the Green and halve the Red channels
img[:,:,0]   = 0
img[:,:,1]  *= 2
img[:,:,2] //= 2

# Save
cv2.imwrite('result1.png', img)

输出

enter image description here

或者,您可以将图像分割为其组件通道,分别处理它们(可能并行),然后在最后将它们重新组合为BGR图像:

^{pr2}$

enter image description here

相关问题 更多 >

    热门问题