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


文章目录

  • 前言
  • 一、读取图片
  • 二、彩色图片转灰度图

  • 强烈说明:



前言

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


一、读取图片

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

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

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

这里有个小细节

除了这三个标志,您可以分别简单地分别传递整数1、0或-1。

cv2 python 存储灰度图 python opencv读取灰度图_灰度图

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

看看效果图

cv2 python 存储灰度图 python opencv读取灰度图_灰度_02


很明显,这里两个读取方法是一样的。



二、彩色图片转灰度图

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

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)

cv2 python 存储灰度图 python opencv读取灰度图_cv2 python 存储灰度图_03


第三种:

通过分离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()

cv2 python 存储灰度图 python opencv读取灰度图_python_04


这里很明显可以看出每个图的颜色是不一样的

从左到右从上到下分别是b,g,r,原图


强烈说明:

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

这里我放一张BGR的图

cv2 python 存储灰度图 python opencv读取灰度图_灰度_05

他是这个鬼样子的

cv2 python 存储灰度图 python opencv读取灰度图_python_06


在放一张RGB

cv2 python 存储灰度图 python opencv读取灰度图_灰度_07

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

cv2 python 存储灰度图 python opencv读取灰度图_灰度_08


收工!

下班!