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ộcCá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 ảnhCấ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. Khioptions.should_visualizelà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()