Три способа получить изображения в градациях серого в Python + openCV

OpenCV

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

Требуемый код:

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)Разделите три канала картинки и получите три точки ее бгр
  • img_rgb = cv.merge([r, g, b]): объединить его в rbg

Это отображается как на картинке выше, цвет не нормальный.

Но если вы используете matplotlib для отображения изображения, rgb является нормальным цветом, а цвет bgr, читаемый cv, не является нормальным.在这里插入图片描述 在这里插入图片描述 在这里插入图片描述