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

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

Khai báo​

tọa độ x, tọa độ y = ảnh:find_color({
[find_all = có tìm nhiều kết quả hay không,]
[max_results = số kết quả tối đa,]
[max_miss = số điểm không khớp tối đa cho phép,]
[find_order = thứ tự tìm màu,]
[csim_algorithm = thuật toán độ tương đồng màu,]
{tọa độ x của điểm bắt đầu, tọa độ y của điểm bắt đầu, màu của điểm bắt đầu[, độ tương đồng của điểm bắt đầu]},
{tọa độ x của điểm lệch*, tọa độ y của điểm lệch*, màu của điểm lệch*[, độ tương đồng của điểm lệch*]},
{tọa độ x của điểm lệch*, tọa độ y của điểm lệch*, màu của điểm lệch*[, độ tương đồng của điểm lệch*]},
...
} [, độ tương đồng toàn cục, trái, trên, phải, dưới ])

Tham số​

  • có tìm nhiều kết quả hay không
    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

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

  • số điểm không khớp tối đa cho phép
    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ả)

  • thứ tự tìm màu
    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

  • thuật toán độ tương đồng màu (được hỗ trợ 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
  • tọa độ x của điểm bắt đầu, tọa độ y của điểm bắt đầu
    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

  • màu của điểm bắt đầu
    Kiểu số nguyên. Giá trị màu cần tìm

  • độ tương đồng của điểm bắt đầu
    Kiểu số nguyên, không bắt buộc. Trong khoảng 1 ~ 100. Mặc định là 100

  • tọa độ x của điểm lệch*, tọa độ y của điểm lệch*
    Kiểu số nguyên. Vị trí lệch so với điểm bắt đầu

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

  • độ tương đồng của điểm lệch*
    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ố

  • độ tương đồng toàn cục
    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

  • trái, trên, phải, dưới
    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ề​

  • tọa độ x, tọa độ 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ự.
--]]