Hướng dẫn how do you convert an image to gray scale in python? - làm cách nào để bạn chuyển đổi hình ảnh thành thang màu xám trong python?

Tôi đang cố gắng sử dụng matplotlib để đọc trong hình ảnh RGB và chuyển đổi nó thành thang độ xám.

Trong Matlab, tôi sử dụng điều này:

img = rgb2gray(imread('image.png'));

Trong hướng dẫn matplotlib, họ không bao gồm nó. Họ chỉ đọc trong hình ảnh

import matplotlib.image as mpimg
img = mpimg.imread('image.png')

Và sau đó họ cắt mảng, nhưng đó không giống với việc chuyển đổi RGB thành thang độ xám từ những gì tôi hiểu.

lum_img = img[:,:,0]

Tôi thấy khó tin rằng Numpy hoặc Matplotlib không có chức năng tích hợp để chuyển đổi từ RGB sang màu xám. Đây không phải là một hoạt động phổ biến trong xử lý hình ảnh?

Tôi đã viết một chức năng rất đơn giản hoạt động với hình ảnh được nhập bằng imread trong 5 phút. Nó không hiệu quả khủng khiếp, nhưng đó là lý do tại sao tôi hy vọng một triển khai chuyên nghiệp tích hợp.

Sebastian đã cải thiện chức năng của tôi, nhưng tôi vẫn hy vọng tìm thấy một trong những tích hợp.

Thực hiện của Matlab (NTSC/PAL):

import numpy as np

def rgb2gray(rgb):

    r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b

    return gray

Hướng dẫn how do you convert an image to gray scale in python? - làm cách nào để bạn chuyển đổi hình ảnh thành thang màu xám trong python?

Nội dung

  • 1. Giới thiệu Introduction
  • 2 cách khác nhau để chuyển đổi hình ảnh thành thang độ xám trong Python Different Ways to Convert Image to Grayscale in Python
    • 2.1 Hình ảnh đầu vào Input Image
    • 2.2 1. Chuyển đổi hình ảnh màu xám với bụi (hình ảnh scikit) - color.rgb2gray () 1. Image Grayscale Conversion with Skimage (Scikit Image) – color.rgb2gray()
    • 2.3 2. Chuyển đổi hình ảnh màu xám với gối (PIL) - Chuyển đổi () 2. Image Grayscale Conversion with Pillow (PIL) – convert()
    • 2.4 3. Chuyển đổi hình ảnh màu xám với openCV - cv2.imread () 3. Image Grayscale Conversion with OpenCV – cv2.imread()
    • 2.5 4. Chuyển đổi hình ảnh Grays với OpenCV - CV2.cvtcolor () 4. Image Grayscale Conversion with OpenCV – cv2.cvtColor()

Giới thiệu

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn nhiều cách mà bạn có thể chuyển đổi bất kỳ hình ảnh nào thành thang độ xám trong Python bằng cách sử dụng các thư viện khác nhau như Skimage, Gối và OpenCV. Mỗi cách sẽ được hiển thị với các ví dụ để dễ hiểu.

Hình ảnh đầu vào

Đối với tất cả các ví dụ, hình ảnh con chó dưới đây sẽ được sử dụng làm đầu vào.

Hướng dẫn how do you convert an image to gray scale in python? - làm cách nào để bạn chuyển đổi hình ảnh thành thang màu xám trong python?

1

Hình ảnh Scikit hoặc Skimage là gói nguồn mở dựa trên Python cho các thuật toán xử lý hình ảnh khác nhau. Bất kỳ hình ảnh màu nào cũng có thể được chuyển đổi thành thang độ xám với sự trợ giúp của hàm.rgb2gray () của skimage.

Quảng cáo

Trong ví dụ dưới đây, hình ảnh được đọc bằng io.imread () và sau đó nó được chuyển đổi thành thang độ xám với color.rgb2gray () và cuối cùng nó được hiển thị với io.imshow ()

Trong [0]:

from skimage import color
from skimage import io

img = io.imread('dog.jpg')
imgGray = color.rgb2gray(img)

io.imshow(imgGray)

Out[0]:

Hướng dẫn how do you convert an image to gray scale in python? - làm cách nào để bạn chuyển đổi hình ảnh thành thang màu xám trong python?

2. Chuyển đổi hình ảnh màu xám với gối (PIL) - Chuyển đổi ()

Gối là một thư viện xử lý hình ảnh khác của Python có thể được sử dụng để chuyển đổi hình ảnh thành thang độ xám với hàm img.convert () của nó.

Trong ví dụ này, hình ảnh được đọc với Image.open () và sau đó nó được chuyển đổi với Chuyển đổi () bằng cách truyền ‘L đấm làm tham số. Tham số ‘L, được sử dụng để chuyển đổi hình ảnh thành thang độ xám.

Trong 1]:

from PIL import Image

img = Image.open('dog.jpg')
imgGray = img.convert('L')
imgGray.show()

Out[1]:

Hướng dẫn how do you convert an image to gray scale in python? - làm cách nào để bạn chuyển đổi hình ảnh thành thang màu xám trong python?

3. Chuyển đổi hình ảnh màu xám với openCV - cv2.imread ()

OpenCV là gói xử lý hình ảnh phổ biến nhất hiện có và có một vài cách để biến hình ảnh thành thang độ xám. Trong cách tiếp cận đầu tiên này, hình ảnh có thể được thay đổi thành thang độ xám trong khi đọc hình ảnh bằng cv2.Imread () bằng cách chuyển giá trị cờ là 0 cùng với tên tệp hình ảnh.

In[2]:

import cv2

# Convert to Grayscale
img_gray=cv2.imread("dog.jpg",0)

# To display Image
window_name='Grayscale Conversion OpenCV'
cv2.namedWindow(window_name, cv2.WINDOW_NORMAL)
cv2.imshow(window_name,img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

Out[2]:

Hướng dẫn how do you convert an image to gray scale in python? - làm cách nào để bạn chuyển đổi hình ảnh thành thang màu xám trong python?

4. Chuyển đổi hình ảnh màu xám với openCV - cv2.cvtcolor ()

Trong kỹ thuật tiếp theo, hình ảnh có thể được thay đổi thành thang độ xám với sự trợ giúp của cv2.cvtcolor () của mô -đun OpenCV được sử dụng để thay đổi không gian màu.

Tham số được sử dụng với hàm này cho thang độ xám là color_bgr2gray như chúng ta có thể thấy trong ví dụ dưới đây.

Trong 3]:

import cv2

# Convert to Grayscale
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# To display Image
window_name='Grayscale Conversion OpenCV'
cv2.namedWindow(window_name, cv2.WINDOW_NORMAL)
cv2.imshow(window_name,img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

Out[3]:

Hướng dẫn how do you convert an image to gray scale in python? - làm cách nào để bạn chuyển đổi hình ảnh thành thang màu xám trong python?

  • Cũng đọc hướng dẫn của PRO OpenCV Tutorial – Image Colorspace Conversion using cv2.cvtColor()