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

cv - Chuyển ảnh thành các hình dạng đường viền (:cv_to_shapes)

Khai báo​

tập hợp hình dạng, ảnh trực quan = ảnh:cv_to_shapes([cấu hình khớp đường viền])

Tham số​

  • cấu hình khớp đường viền
    Kiểu bảng, không bắt buộc

    Các trường tùy chọn
    {
    should_visualize = false | true, -- không bắt buộc, có xuất ảnh trực quan hóa hay không, mặc định false
    closed = false | true, -- không bắt buộc, hình dạng có khép kín hay không, mặc định false
    blur_size = integer_value, -- không bắt buộc, kích thước nhân làm mờ, chỉ nhận số lẻ dương, mặc định 3
    canny_threshold1 = 100, -- không bắt buộc, ngưỡng dưới Canny, mặc định 100
    canny_threshold2 = 200, -- không bắt buộc, ngưỡng trên Canny, mặc định 200
    approx_epsilon = integer_value, -- không bắt buộc, tỷ lệ phần trăm chu vi dùng để xấp xỉ đường viền, mặc định 2
    }

Giá trị trả về​

  • tập hợp hình dạng
    Kiểu bảng. Danh sách các hình dạng trong ảnh

    Cấu trúc hình dạng
    {
    { -- hình dạng 1
    { -- đỉnh 1
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- đỉnh 2
    ["y"] = number_value,
    ["x"] = number_value,
    },
    ...
    },
    { -- hình dạng 2
    { -- đỉnh 1
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- đỉnh 2
    ["y"] = number_value,
    ["x"] = number_value,
    },
    ...
    },
    ...
    }
  • ảnh trực quan
    Đối tượng ảnh. Khi options.should_visualize là true, đây là ảnh trực quan hóa

Mô tả​

Chuyển các đường viền trong ảnh thành hình dạng (danh sách đỉnh)
Nên ưu tiên các hình dạng đơn giản, rõ ràng và khép kín để có kết quả tốt hơn

Ví dụ​

local cv = require("image.cv")
local img = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
local shapes, visimg = img:cv_to_shapes({
blur_size = 3,
approx_epsilon = 2, -- tỷ lệ chống nhiễu 0~100
closed = true,
should_visualize = true,
})
nLog(shapes)
dialog():add_image(visimg):show()