Chuyển tới nội dung chính

Tìm màu trong ảnh (:find_color)

Khai báo

x, y = img:find_color({
[find_all = find_all,]
[max_results = max_results,]
[max_miss = max_miss,]
[find_order = find_order,]
[csim_algorithm = color_similarity_algorithm,]
{start_x, start_y, start_color[, start_similarity]},
{dx*, dy*, color*[, similarity*]},
{dx*, dy*, color*[, similarity*]},
...
} [, global_similarity, left, top, right, bottom ])

Tham số

  • find_all
    Kiểu boolean, không bắt buộc. Nếu là true, trả về tất cả vị trí khớp trong phạm vi dưới dạng {{x1,y1},{x2,y2},...}. Mặc định là false

  • max_results
    Kiểu số nguyên, không bắt buộc. Khi find_alltrue, đây là số kết quả tối đa được trả về (<=1000). Mặc định là 100

  • max_miss
    Kiểu số nguyên, không bắt buộc. Số điểm không khớp tối đa được phép. Mặc định là 0 (phải khớp tất cả)

  • find_order
    Kiểu số nguyên, không bắt buộc. Thứ tự tìm kiếm từ 1 ~ 8. Mặc định là 1

    Giá trị thứ tự tìm kiếm
    1 Trên-Dưới-Trái-Phải
    2 Trái-Phải-Trên-Dưới
    3 Phải-Trái-Trên-Dưới
    4 Trên-Dưới-Phải-Trái
    5 Dưới-Trên-Phải-Trái
    6 Phải-Trái-Dưới-Trên
    7 Trái-Phải-Dưới-Trên
    8 Dưới-Trên-Trái-Phải

    API màn hình screen.find_color không có trường này
    Minh họa thứ tự tìm kiếm

  • color_similarity_algorithm (từ phiên bản 20250302)
    Kiểu số nguyên, không bắt buộc. Mặc định là 0

    Thuật toán tính độ tương đồng màu
    0 Thuật toán mặc định của XXT, độ dốc lớn
    1 Khoảng cách Manhattan, độ dốc mượt
    2 Khoảng cách Euclid, độ dốc mượt
  • start_x, start_y
    Kiểu số nguyên. Tọa độ tham chiếu ban đầu, được dùng làm mốc để tính độ lệch. Nếu không cần dùng độ lệch, hãy đặt là 0, 0

  • start_color
    Kiểu số nguyên. Giá trị màu cần tìm

  • start_similarity
    Kiểu số nguyên, không bắt buộc. Trong khoảng 1 ~ 100. Mặc định là 100

  • dx*, dy*
    Kiểu số nguyên. Vị trí lệch so với điểm bắt đầu

  • color*
    Kiểu số nguyên. Màu dự kiến tại vị trí lệch

  • similarity*
    Kiểu số nguyên, không bắt buộc. Trong khoảng -100 ~ 100. Mặc định là 100. Độ tương đồng âm nghĩa là khớp khi độ tương đồng nhỏ hơn giá trị tuyệt đối của tham số

  • global_similarity
    Kiểu số nguyên, không bắt buộc. Được dùng khi không chỉ định độ tương đồng cho một điểm. Trong khoảng 1 ~ 100. Mặc định là 100

  • left, top, right, bottom
    Kiểu số nguyên, không bắt buộc. Vùng tìm kiếm. Mặc định là toàn bộ ảnh

Giá trị trả về

  • x, y
    Kiểu số nguyên. Tọa độ của cấu trúc khớp đầu tiên. Trả về -1, -1 nếu không tìm thấy

Mô tả

Sử dụng chế độ độ tương đồng để tìm vị trí đầu tiên trong vùng khớp với cấu trúc màu nhiều điểm
Để biết cách sử dụng chế độ độ lệch, xem screen.find_color

Ví dụ

img = screen.image()

x, y = img:find_color({
{ 0, 0, 0xec1c23},
{ 12, -3, 0xffffff, 85},
{ 5, -18, 0x00adee},
{ -1, -10, 0xffc823},
{ 2, -34, 0xa78217},
{ 12, -55, 0xd0d2d2},
}, 90, 0, 0, 100, 100)
--
--[[
Trong vùng từ góc trên bên trái (0, 0) đến góc dưới bên phải (100, 100),
tìm điểm đầu tiên có độ tương đồng với màu 0xec1c23 lớn hơn 90,
đồng thời màu tại vị trí tương đối (12, -3) có độ tương đồng với 0xffffff lớn hơn 85,
màu tại vị trí tương đối (5, -18) có độ tương đồng với 0x00adee lớn hơn 90,
và tất cả các điểm còn lại cũng khớp theo cách tương tự.
--]]
--
-- Đoạn mã tương đương:
--
x, y = img:find_color({
{ 509, 488, 0xec1c23},
{ 521, 485, 0xffffff, 85},
{ 514, 470, 0x00adee},
{ 508, 478, 0xffc823},
{ 511, 454, 0xa78217},
{ 521, 433, 0xd0d2d2},
}, 90, 0, 0, 100, 100)
--
--[[
Trong vùng từ góc trên bên trái (0, 0) đến góc dưới bên phải (100, 100),
tìm điểm đầu tiên có độ tương đồng với màu 0xec1c23 lớn hơn 90,
đồng thời màu tại vị trí tương đối (521-509, 485-488) có độ tương đồng với 0xffffff lớn hơn 85,
màu tại vị trí tương đối (514-509, 470-488) có độ tương đồng với 0x00adee lớn hơn 90,
và tất cả các điểm còn lại cũng khớp theo cách tương tự.
--]]