2012-10-18 66 views
5

Làm cách nào để chuyển đổi đối tượng bề mặt trong pygame thành mảng giá trị RGB 2 chiều (một giá trị cho mỗi pixel)? Tôi đã đọc tài liệu về PixelArrays và Surfarrays và tôi dường như không thể tìm thấy câu trả lời cho câu hỏi của mình. Ví dụ sau đó được chào đón nhiều hơn.Chuyển đổi hình ảnh trong pygame thành mảng giá trị RGB 2D

Trả lời

8

Các pygame documentation nói rằng đưa một đối tượng bề mặt, bạn có thể tạo một wrapper PixelArray để cung cấp trực tiếp truy cập mảng 2D sang pixel của nó bằng cách gọi phương pháp PixelArray() của mô-đun như thế này:

pxarray = pygame.PixelArray(surface) 

Logic một PixelArray đối tượng là mảng 2 chiều của các giá trị RGB được lưu trữ dưới dạng số nguyên.

Một mục PixelArray điểm ảnh có thể được gán một giá trị số nguyên liệu, một pygame.Color dụ (một đối tượng cho cơ quan đại diện màu), hoặc một (r, g, b[, a]) tuple.

pxarray[x, y] = 0xFF00FF 
pxarray[x, y] = pygame.Color(255, 0, 255) 
pxarray[x, y] = (255, 0, 255) 

Nó cũng đề cập:

Tuy nhiên, giá trị số nguyên duy nhất của một điểm ảnh được trả về. Do đó, để so sánh pixel với màu cụ thể, màu cần được ánh xạ đầu tiên bằng cách sử dụng phương thức Surface.map_rgb() của đối tượng Surface được tạo PixelArray.

Có nghĩa là bạn sẽ cần phải sử dụng phương pháp Surface.map_rgb() để có được bộ dữ liệu RGB từ PixelArray giá trị số nguyên bất cứ khi nào bạn không làm một bài tập để các mảng, tức là khi đọc giá trị của một pixel, như đang được thực hiện trong điều kiện sau đây:

# Check, if the first pixel at the topleft corner is blue
if pxarray[0, 0] == surface.map_rgb((0, 0, 255)):
        ...

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn, điều đó đã xảy ra. –

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