OpenCV-Python 彩色图像转灰度图

本文主要是讲OpenCV-Python对图像进行彩色转灰度图的操作


前言

这里给出一个OpenCV-Python文档的链接
链接: OpenCV-Python中文文档.


一、读取图片

使用函数cv2.imread()读取图像。该映像应位于工作目录中,或者应提供完整的映像路径。

第二个参数是一个标志,用于指定应读取图像的方式。

cv2.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。
cv2.IMREAD_GRAYSCALE:以灰度模式加载图像
cv2.IMREAD_UNCHANGED:加载图像,包括alpha通道

这里有个小细节
除了这三个标志,您可以分别简单地分别传递整数1、0或-1。
在这里插入图片描述

import cv2 as cv
img = cv.imread('lbxx.jpg',0)  #直接以灰度图片读取
img_1 = cv.imread('lbxx.jpg',cv.IMREAD_GRAYSCALE)  

看看效果图
在这里插入图片描述
很明显,这里两个读取方法是一样的。


二、彩色图片转灰度图

这里用了三种方法
第一种:
就是直接读取灰度图片:

import cv2 as cv
img = cv.imread('lbxx.jpg',0)  #直接以灰度图片读取
img_1 = cv.imread('lbxx.jpg',cv.IMREAD_GRAYSCALE)  

这种方法的图片就在上边

第二种:
通过cvtColor库将其转为灰度

import cv2 as cv
img = cv.imread('lbxx.jpg',1)
img_1 = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
cv.imshow('gray',img_1)
cv.imshow('colour',img)
cv.waitKey(0)

在这里插入图片描述
第三种:
通过分离RGB三个通道得到三个通道的灰度图

import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('lbxx.jpg',1)
#cv2.imread读取图片格式是BGR
b,g,r = cv.split(img)  #这个地方将图像拆分,把彩色图像分为3个颜色
plt.figure(figsize=(10,8))
color = [b,g,r]
img_2 = cv.merge([r,g,b])  #这个地方我把bgr格式的图片转成了rgb,然后显示的时候会变成正常的彩色
for i in range(3):
    plt.subplot(2,2,i+1)
    plt.imshow(color[i],'gray')
    plt.subplot(2,2,4)
    plt.imshow(img_2)
plt.savefig('./三通道灰度.png')
plt.show()

在这里插入图片描述
这里很明显可以看出每个图的颜色是不一样的
从左到右从上到下分别是b,g,r,原图


强烈说明:

OpenCV-python 在读取图片的时候
imread读取的图片是BGR不是RGB!!!不是RGB!!!不是RGB!!!

这里我放一张BGR的图
在这里插入图片描述他是这个鬼样子的
在这里插入图片描述


在放一张RGB
在这里插入图片描述

是的是的这才是我认识的蜡笔小新

在这里插入图片描述
收工!
下班!

  • 44
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值