OpenCV-Python 彩色图像转灰度图

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

文章目录

  • 前言
  • 一、读取图片
  • 二、彩色图片转灰度图
  • 强烈说明:


前言

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


一、读取图片

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

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

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

这里有个小细节
除了这三个标志,您可以分别简单地分别传递整数1、0或-1。
OpenCV-Python 彩色图像转灰度图_第1张图片

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

看看效果图
OpenCV-Python 彩色图像转灰度图_第2张图片
很明显,这里两个读取方法是一样的。


二、彩色图片转灰度图

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

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)

OpenCV-Python 彩色图像转灰度图_第3张图片
第三种:
通过分离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()

OpenCV-Python 彩色图像转灰度图_第4张图片
这里很明显可以看出每个图的颜色是不一样的
从左到右从上到下分别是b,g,r,原图


强烈说明:

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

这里我放一张BGR的图
OpenCV-Python 彩色图像转灰度图_第5张图片他是这个鬼样子的
OpenCV-Python 彩色图像转灰度图_第6张图片


在放一张RGB
OpenCV-Python 彩色图像转灰度图_第7张图片

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

OpenCV-Python 彩色图像转灰度图_第8张图片
收工!
下班!

你可能感兴趣的:(数字图像处理,opencv,python)