无法在opencv(python)

时间:2018-04-13 11:55:50

标签: python opencv computer-vision

我正在尝试将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)

我真的很困惑为什么imshow和imwrite之间会发生这种变化。

任何提示?

Images in different color space, displayed using plt.imshow()

Image written to the disk

由于

1 个答案:

答案 0 :(得分:2)

可能需要将输出数组乘以255.阈值通常返回0和1.不确定opencv,但我使用其他包有类似的问题。它可能看起来很黑,但实际上是0和1。