我正在尝试像这样均衡 1 个单通道图像:
img = cv2.equalizeHist(img)
但由于它是一个 float64 img,我收到以下错误:
错误:函数 equalizeHist 中的 (-215) _src.type() == CV_8UC1
我该怎么做?
原文由 syfy 发布,翻译遵循 CC BY-SA 4.0 许可协议
所以基本上直方图均衡适用于灰度图像。所以如果你想在彩色图像上做直方图均衡,你可以使用这个代码。
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))
原文由 Wailan Tirajoh 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
equalizeHist函数是图像的直方图均衡化,只针对CV_8UC1类型实现,CV_8UC1是单通道8位无符号整数类型。
要将图像转换为这种类型,您可以使用函数
convertTo
和目标类型(必须是相同数量的通道)。确保源图像具有正确的值范围,通常浮点图像被解释为 0 = 黑色和 1 = 白色,灰色范围介于两者之间,而整数图像被解释为 0 = 黑色和最大值 = 白色(这无符号 8 位类型为 255)。因此,您通常必须将源图像乘以 255 以适应范围。函数
convertTo
有一个参数可以在转换期间缩放您的值,与手动缩放相比,这可以提高您的速度。