我正在尝试将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之间会发生这种变化。
任何提示?
由于
答案 0 :(得分:2)
可能需要将输出数组乘以255.阈值通常返回0和1.不确定opencv,但我使用其他包有类似的问题。它可能看起来很黑,但实际上是0和1。