[英]OpenCV: error: (-215:Assertion failed) _src.type() == CV_8UC1 in function 'cv::equalizeHist'
[英]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.