Python + openCV获取灰度图的三种方式

2,078 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

需要用到的代码:

import cv2 as cv
import matplotlib.pyplot as plt
# 读入图片
img = cv.imread(src,0)
# 显示图片
cv.imshow("img", img)
cv.waitKey(0)

cv.imread()

使用imread(‘图片地址’,flag)可以直接将彩色图片显示为灰度图。

  • flags = -1:imread按解码得到的方式读入图像
  • flags = 0:imread按单通道的方式读入图像,即灰白图像
  • flags = 1:imread按三通道方式读入图像,即彩色图像 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

cv.cvtColor

使用cv.cvtColor(变量名,cv.COLOR_BGR2GRAY) 在这里插入图片描述

分离rbg分别获得灰度图

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述


补充一个有趣的东西: opencv-python是用bgr三通道处理图像的,而matlibplot是用rgb。 在这里插入图片描述

  • b, g, r = cv.split(img)将图片三通道分离,获得其bgr三个分值
  • img_rgb = cv.merge([r, g, b]):将其合并为rbg

这样显示出来的就如上图,颜色不正常。

但是如果你用matplotlib显示图片,rgb就是正常色,而cv读入的bgr颜色就不正常。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述