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

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

发现 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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值