Python OpenCV 彩色轉灰階(RGB/BGR to GRAY)

本篇將介紹如何使用 OpenCV 與 Python 來作彩色影像轉灰階(RGB to GRAY 或 BGR to GRAY),在寫 Python 影像處理程式時常會用到 OpenCV cvtColor 作顏色空間轉換的功能,接下來介紹怎麼使用 Python 搭配 OpenCV 模組來進行 RGB/BGR 轉 GRAY 彩色轉灰階grayscale。

Python OpenCV RGB/BGR to GRAY 彩色轉灰階使用範例

以下範例 ShengYu 是將 lena.jpg 來作圖片轉灰階示範,彩色轉灰階grayscale的常用方式有兩種:
方法一:將影像用 cv2.imread 讀進來,再將影像從彩色轉換成灰階。
方法二:將影像用 cv2.imread 讀取進來時順便轉換成灰階。

使用 cv2.cvtColor 轉換顏色空間時,第二個參數與灰階相關的有:
cv2.COLOR_BGR2GRAY
cv2.COLOR_GRAY2BGR
cv2.COLOR_RGB2GRAY
cv2.COLOR_GRAY2RGB
opencv 預設的排列方式為BGR,而不是RGB唷!
所以這邊使用的是 cv2.COLOR_BGR2GRAY

使用 cv2.imread 讀取圖片時,第二個參數可以指定圖片的格式,分別為:
cv2.IMREAD_UNCHANGED
cv2.IMREAD_COLOR
cv2.IMREAD_GRAYSCALE

詳細程式碼如下:

opencv-rgb-to-gray.py
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2

# method 1
image = cv2.imread('lena.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# method 2
#image = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('Result', image)
cv2.waitKey(0)

結果如下圖所示:

cv2.cvtColor 參數的詳細細節請參考這裡
cv2.imread 參數的詳細細節請參考這裡

參考
[1] Python OpenCV | cv2.imread() method - GeeksforGeeks
https://www.geeksforgeeks.org/python-opencv-cv2-imread-method/
[2] Python 與 OpenCV 基本讀取、顯示與儲存圖片教學 - G. T. Wang
https://blog.gtwang.org/programming/opencv-basic-image-read-and-write-tutorial/
[3] [Python + OpenCV] 彩色轉灰階(RGB to Gray) @ K_程式人 :: 痞客邦 ::
https://jennaweng0621.pixnet.net/blog/post/403254017

其它相關文章推薦
Python OpenCV 彩色轉HSV(RGB/BGR to HSV)
Python OpenCV 彩色轉YCbCr(RGB/BGR to YCbCr)
Python OpenCV 灰階轉彩色(Gray to RGB/BGR)
Python OpenCV 影像二值化 Image Thresholding
Python OpenCV 影像平滑模糊化 blur
Python OpenCV 影像邊緣偵測 Canny Edge Detection
Python OpenCV resize 圖片縮放
小專案 Python OpenCV 圖片轉字元圖畫