繁体   English   中英

错误:(-215) _src.type() == CV_8UC1 在函数 equalizeHist 中尝试均衡 float64 图像时

[英]error: (-215) _src.type() == CV_8UC1 in function equalizeHist when trying to equalize a float64 image

我正在尝试像这样均衡 1 个单通道图像:

img = cv2.equalizeHist(img)

但由于它是一个 float64 img,我收到以下错误:

错误:(-215) _src.type() == CV_8UC1 在函数 equalizeHist

我该怎么做?

所以基本上直方图均衡适用于灰度图像。 所以如果你想在彩色图像上做直方图均衡,你可以使用这个代码。

R, G, B = cv2.split(img)

output1_R = cv2.equalizeHist(R)
output1_G = cv2.equalizeHist(G)
output1_B = cv2.equalizeHist(B)

equ = cv2.merge((output1_R, output1_G, output1_B))

函数equalizeHist是图像的直方图均衡化,仅针对CV_8UC1类型实现,该类型是单通道8位无符号整数类型。

要将图像转换为这种类型,您可以将函数convertTo与目标类型一起使用(通道数必须相同)。

确保源图像具有正确的值范围,通常浮点图像被解释为 0 = 黑色和 1 = 白色,灰度范围介于两者之间,而整数图像被解释为 0 = 黑色和最大值 = 白色(其中无符号 8 位类型为 255)。 因此,您通常必须将源图像乘以 255 以适应范围。 函数convertTo有一个参数可以在转换期间缩放你的值,与手动缩放相比,它可以提高速度。

您也可以使用.astype (numpy.uint8)。

初始化图像变量时,不要忘记标志,它为我解决了它。

img = cv2.imread("my_image.png", 0)

我使用 0 作为标志,因为我正在使用灰度图像。

读取图像并将其转换为灰色后。 利用
img = np.float32(img)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM