2016-10-01 30 views
8

Khi tôi cố gắng chuyển đổi hình ảnh sang màu xám quy mô sử dụng:skimage: Tại sao rgb2gray từ kết quả skimage.color trong một hình ảnh màu?

from skimage.io import imread 
from skimage.color import rgb2gray 
mountain_r = rgb2gray(imread(os.getcwd() + '/mountain.jpg')) 

#Plot 
import matplotlib.pyplot as plt 
plt.figure(0) 
plt.imshow(mountain_r) 
plt.show() 

tôi nhận được một hình ảnh màu lạ thay vì một màu xám quy mô.

Thực hiện chức năng theo cách thủ công cũng cho tôi kết quả tương tự. Các chức năng tùy chỉnh là:

def rgb2grey(rgb): 
    if len(rgb.shape) is 3: 
     return np.dot(rgb[...,:3], [0.299, 0.587, 0.114]) 

    else: 
     print 'Current image is already in grayscale.' 
     return rgb 

Original

màu hình ảnh mà không có trong thang độ xám. gray

Tại sao chức năng không chuyển đổi hình ảnh sang thang độ xám?

+5

Chuyển đổi thang độ xám đang hoạt động chính xác, nhưng matplotlib chỉ sử dụng một bản đồ màu khác theo mặc định, không có sắc thái xám, nhưng một cái gì đó giữa màu xanh và đỏ được chọn. Hãy thử '' 'imshow (cmap = 'Grays')' ''. Bạn có thể kiểm tra đầu ra và sẽ thấy, rằng các phần sáng nhất của hình ảnh hiện có màu đỏ, màu tối nhất là màu xanh lam. – sascha

+0

Điều đó rất hữu ích. Hình ảnh của tôi hiện đang ở chế độ màu xám. – kwotsin

Trả lời

10

Hình ảnh kết quả là hình ảnh thang độ xám. imshow đang sử dụng, theo mặc định, một loại bản đồ nhiệt (được gọi là vidris) để hiển thị cường độ hình ảnh. Chỉ cần xác định colormap gryascale như hình dưới đây:

plt.imshow(mountain_r, cmap="gray")

Đối với tất cả các colormaps có thể, có một cái nhìn tại colormap reference.

Các vấn đề liên quan