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

shapes, visualized = img:cv_to_shapes([ options ])

Tham số

  • options
    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ề

  • shapes
    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,
    },
    ...
    },
    ...
    }
  • visualized
    Đối tượng ảnh. Khi options.should_visualizetrue, đâ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()