Color

Đại diện cho một màu ARGB và cung cấp helper lấy màu/so sánh màu.

Cú pháp

Color(value, /)

Tham số khởi tạo

TênMô tả
valueString | Number
Chuỗi hex (`#AARRGGBB`/`#RRGGBB`) hoặc số ARGB.
Bắt buộc · Chỉ truyền theo vị trí
Không có giá trị mặc định

Giá trị trả về

Ví dụ

cursor = Point(540, 920)
picked = Color.get(cursor)
if picked == "#FFFFFFFF":
    click(cursor, random=6)

Thuộc tính

TênMô tả
argbNumber
Giá trị ARGB dạng số nguyên.
aInt
Kênh alpha 0-255.
rInt
Kênh đỏ 0-255.
gInt
Kênh xanh lá 0-255.
bInt
Kênh xanh dương 0-255.
hexString
Chuỗi hex `#AARRGGBB`.
Ví dụ khởi tạo
c1 = Color("#FFFFFFFF")
c2 = Color(4294967295)

Phương thức

7 phương thức

Color.get

Đọc màu trên màn hình: Point -> Color, Region -> mảng màu 2 chiều, list[Point] -> list màu. Đây là lần lấy mẫu tức thời, không retry; nếu chưa có frame hoặc thiếu mẫu màu thì trả về màu mặc định thay vì dừng script.

Cú pháp

Color.get(target, interval=3, default="#00000000")

Tham số

TênMô tả
targetPoint | Region | list[Point]
Mục tiêu lấy mẫu.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
intervalNumber
Bước lấy mẫu (pixel) khi target là Region.
Tùy chọn · Theo vị trí hoặc tên
Mặc định: 3
defaultColor | String | Number
Màu mặc định trả về khi không chụp được màn hình hoặc không lấy được pixel.
Tùy chọn · Theo vị trí hoặc tên
Mặc định: #00000000

Giá trị trả về

Color | list[list[Color]] | list[Color] — Dữ liệu màu trả về theo kiểu target, các mẫu thiếu được bù bằng default.

Ví dụ

c = Color.get(Point(100, 200), default="#FF000000")
grid = Color.get(Region(120, 240, 90, 60), interval=3, default="#00000000")
batch = Color.get([Point(10, 10), Point(20, 20)])

Color.compare

So sánh hai màu theo sai số từng kênh RGB. Chỉ true khi |R1-R2|, |G1-G2| và |B1-B2| đều <= tolerance.

Cú pháp

Color.compare(a, b, tolerance=0)

Tham số

TênMô tả
aColor | String | Number
Màu thứ nhất.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
bColor | String | Number
Màu thứ hai.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
toleranceNumber
Sai số cho phép trên từng kênh (0-255). Nên bắt đầu 4-8 cho màu giao diện gần như giống nhau, 10-16 khi có anti-alias/nén ảnh.
Tùy chọn · Theo vị trí hoặc tên
Mặc định: 0

Giá trị trả về

Boolean — true khi mọi kênh RGB đều nằm trong tolerance. Gợi ý nhanh: 0 = khớp tuyệt đối, 4-8 = gần như giống, 10-16 = so khớp mềm hơn, >24 = khá lỏng.

Ví dụ

base = Color(\"#FF4CAF50\")
sample = Color.get(Point(620, 340))
is_same = Color.compare(base, sample, tolerance=8)  # sắc độ UI gần giống

Color.distance_rgb

Tính khoảng cách Euclid trong không gian RGB giữa hai màu.

Cú pháp

Color.distance_rgb(a, b)

Tham số

TênMô tả
aColor | String | Number
Màu thứ nhất.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
bColor | String | Number
Màu thứ hai.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

Number — Khoảng cách RGB trong khoảng 0 -> 441.67 (0 = khớp tuyệt đối). Gợi ý: <=8 gần như giống, 9-20 tương đối gần, 21-40 khác thấy rõ, >40 khác xa.

Ví dụ

actual = Color.get(Point(620, 340))
rgb_gap = Color.distance_rgb(\"#FF4CAF50\", actual)
if rgb_gap <= 15:
    print(\"close in RGB\")

Color.delta_e

Tính Delta E (CIE76) giữa hai màu theo độ khác biệt cảm nhận.

Cú pháp

Color.delta_e(a, b)

Tham số

TênMô tả
aColor | String | Number
Màu thứ nhất.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
bColor | String | Number
Màu thứ hai.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

Number — Điểm chênh lệch màu theo cảm nhận. Quy ước nhanh: <1 gần như không phân biệt, 1-2 khó nhận ra, 2-5 bắt đầu thấy khác, 5-10 khác rõ, >10 là màu khác nhau.

Ví dụ

actual = Color.get(Point(620, 340))
d = Color.delta_e(\"#FF4CAF50\", actual)
if d <= 3:
    print(\"looks similar to human eye\")

Color.compare

Bản instance của phép so sánh sai số RGB. Hữu ích khi đã lấy mẫu một màu và cần so với màu mục tiêu.

Cú pháp

color.compare(other, tolerance=0)

Tham số

TênMô tả
otherColor | String | Number
Màu cần so sánh.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
toleranceNumber
Sai số cho phép trên từng kênh (0-255). Mức same-ish thường dùng: 4-8; tăng 10-16 khi ảnh bị nhiễu/nén.
Tùy chọn · Theo vị trí hoặc tên
Mặc định: 0

Giá trị trả về

Boolean — Kết quả so sánh. 0 là khớp tuyệt đối; tolerance càng lớn thì so khớp càng dễ hơn.

Ví dụ

picked = Color.get(Point(540, 920))
if picked.compare(\"#FFFFFFFF\", tolerance=5):
    click(Point(540, 920))

Color.distance_rgb

Tính khoảng cách Euclid trong không gian RGB từ màu hiện tại sang màu khác.

Cú pháp

color.distance_rgb(other)

Tham số

TênMô tả
otherColor | String | Number
Màu cần so sánh.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

Number — Khoảng cách RGB (0 -> 441.67). Đọc nhanh: <=8 gần như giống, 9-20 tương đối gần, 21-40 khác thấy rõ, >40 khác xa.

Ví dụ

base = Color(\"#FF4CAF50\")
actual = Color.get(Point(620, 340))
rgb_gap = base.distance_rgb(actual)
if rgb_gap <= 20:
    print(\"close enough in RGB\")

Color.delta_e

Tính Delta E (CIE76) từ màu hiện tại sang màu khác để so sánh theo cảm nhận.

Cú pháp

color.delta_e(other)

Tham số

TênMô tả
otherColor | String | Number
Màu cần so sánh.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định

Giá trị trả về

Number — Điểm chênh lệch màu theo cảm nhận. Gợi ý thực tế: <1 khó phân biệt, 1-2 rất nhẹ, 2-5 bắt đầu thấy khác, 5-10 khác rõ, >10 rất khác.

Ví dụ

base = Color(\"#FF4CAF50\")
actual = Color.get(Point(620, 340))
perceptual_gap = base.delta_e(actual)
if perceptual_gap <= 2:
    print(\"looks almost the same\")