本文主要是讲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)
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!!!
是的是的这才是我认识的蜡笔小新