2016-11-20 73 views
5

Tôi có một hình ảnh RGB đã được chuyển thành một mảng có nhiều mảng. Tôi đang cố gắng tính toán giá trị RGB trung bình của hình ảnh bằng cách sử dụng các chức năng sần sùi hoặc scipy.Làm thế nào để tính toán màu trung bình của hình ảnh trong mảng numpy?

Các giá trị RGB được thể hiện như là một điểm nổi 0,0-1,0, nơi 1,0 = 255.

Một mẫu 2x2 điểm ảnh image_array:

[[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], 
[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]] 

Tôi đã thử:

import numpy 
numpy.mean(image_array, axis=0)` 

Nhưng kết quả đầu ra đó:

[[0.5 0.5 0.5] 
[0.5 0.5 0.5]] 

Những gì tôi muốn chỉ là đơn RGB trung bình giá trị là:

[0.5 0.5 0.5] 

Trả lời

11

Bạn đang dùng giá trị trung bình cùng chỉ có một trục, trong khi đó bạn cần phải thực hiện giá trị trung bình dọc theo hai trục: chiều cao và chiều rộng của hình ảnh .

Hãy thử điều này:

>>> image_array  
array([[[ 0., 0., 0.], 
     [ 0., 0., 0.]], 

     [[ 1., 1., 1.], 
     [ 1., 1., 1.]]]) 
>>> np.mean(image_array, axis=(0, 1)) 
array([ 0.5, 0.5, 0.5]) 

Khi docs sẽ cho bạn biết, bạn có thể chỉ định một tuple cho tham số axis, xác định các trục trên mà bạn muốn giá trị trung bình được thực hiện.

+1

Thats it! Tôi đã không nhận ra bạn có thể chỉ định nhiều hơn một trục. – dranobob

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