发现 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)
原图

二值图

二值图直方图

读取保存的二值图,转换成灰度图,再次计算直方图,发现本来是应该二值化的直方图,在0和255周围出现了一些不该出现的像素

读取图片程序
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 OpenCV:RGB与灰度图相互转换问题解析
本文探讨了使用Python的OpenCV库处理RGB图像和灰度图像时遇到的问题。当从RGB图像转换为灰度图并进行二值化处理后再保存,重新读取该图像并转回灰度图时,发现某些像素点颜色发生改变。通过代码示例展示了图像转换过程,直方图的变化揭示了在0和255之间出现了不应有的像素值。
1万+

被折叠的 条评论
为什么被折叠?



