python 灰度图转rgb rgb转灰度之间的变化

发现 rgb——二值化——保存图片
读取保存图——转为灰度图
opencv在保存灰度图时,自动将单通道的灰度图转换为三通道的rgb图存储,再次读取保存图像,将三通道rgb转换成灰度图时,有些颜色相近似的像素点发生了变化
1、读取彩色图片,转换为灰度图,二值化,保存,代码如下

import cv2
import matplotlib.pyplot as plt

img = cv2.imread(r"D:\ma.jpg")
# 转化成灰度图
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
# 转换成二值图
e, binary = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY)
# 展示二值图
cv2.imshow('q', binary)
cv2.waitKey()
# 二值图像的直方图
plt.hist(binary.flatten(), 256)
plt.show()
# 保存
cv2.imwrite(r"D:\t1.jpg", binary)

原图
python 灰度图转rgb rgb转灰度之间的变化_第1张图片
二值图
python 灰度图转rgb rgb转灰度之间的变化_第2张图片
二值图直方图
python 灰度图转rgb rgb转灰度之间的变化_第3张图片
读取保存的二值图,转换成灰度图,再次计算直方图,发现本来是应该二值化的直方图,在0和255周围出现了一些不该出现的像素
python 灰度图转rgb rgb转灰度之间的变化_第4张图片
读取图片程序

import cv2
import matplotlib.pyplot as plt
# 读取图片
img = cv2.imread(r"D:\t1.jpg")
# 转换为灰度图
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
# 再次计算二值图
plt.hist(gray.flatten(), 256)
plt.show()

你可能感兴趣的:(python,python,opencv,计算机视觉,灰度图,rgb)