繁体   English   中英

无法在OpenCV中写入有效的二进制阈值图像(Python)

[英]Unable to write a valid binary threshold image in opencv (python)

我试图将RGB图像转换为YUV空间,然后尝试添加颜色阈值以创建二进制图像。

我这样做如下:

img = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)

b_channel = cv2.cvtColor(img, cv2.COLOR_RGB2Lab)[:, :, 2]
l_channel = cv2.cvtColor(img, cv2.COLOR_RGB2LUV)[:, :, 0]
s_channel = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)[:, :, 2]

s_binary = np.zeros_like(s_channel)
s_binary[(s_channel > s_thresh_min) & (s_channel <= s_thresh_max)] = 1

b_binary = np.zeros_like(b_channel)
b_binary[(b_channel > b_thresh_min) & (b_channel <= b_thresh_max)] = 1

l_binary = np.zeros_like(l_channel)
l_binary[(l_channel > l_thresh_min) & (l_channel <= l_thresh_max)] = 1

combined_binary = np.zeros_like(b_binary)
combined_binary[(l_binary == 1) | (b_binary == 1) | (s_binary == 1)] = 1
f, ax1 = plt.subplots(1, 1, figsize=(10, 5))

ax1.imshow(combined_binary)

这一切都很好,我可以在屏幕上看到二进制图像。

但是,当我尝试使用cv2.imwrite将其保存在磁盘上时,出现黑色图像。

cv2.imwrite(file_name, combined_binary)

我真的很困惑,为什么在显示和写入之间发生这种变化。

有什么提示吗?

使用plt.imshow()显示的不同色彩空间中的图像

映像写入磁盘

谢谢

可能需要将输出数组乘以255。阈值化通常返回0和1。不确定opencv,但是使用其他软件包时也遇到类似的问题。 它可能看起来是黑色的,但实际上为0和1。

暂无
暂无

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

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