2013-05-23 46 views
7

Tôi cần một hàm so sánh hai hình ảnh PIL có cùng kích thước. Hãy gọi cho họ A và B. Kết quả được cho là một hình ảnh mới có cùng kích thước. Nếu một điểm ảnh giống nhau ở cả A và B, nó phải được đặt thành màu cố định (ví dụ: màu đen), nếu không nó sẽ được đặt thành cùng một màu như B.So sánh hai hình ảnh pixel-khôn ngoan với PIL (Thư viện hình ảnh Python)

Có thư viện để triển khai chức năng này không mà không có một vòng lặp đắt tiền trên tất cả các điểm ảnh?

Trả lời

13

Không chắc về các thư viện khác, nhưng bạn có thể làm điều này với PIL, với một cái gì đó giống như ...

from PIL import Image, ImageChops 

point_table = ([0] + ([255] * 255)) 

def black_or_b(a, b): 
    diff = ImageChops.difference(a, b) 
    diff = diff.convert('L') 
    diff = diff.point(point_table) 
    new = diff.convert('RGB') 
    new.paste(b, mask=diff) 
    return new 

a = Image.open('a.png') 
b = Image.open('b.png') 
c = black_or_b(a, b) 
c.save('c.png') 
+0

Cảm ơn rất nhiều! Tôi gần như đã viết phần đó vào C. – Maarten

+0

điều này làm gì? –