cv - 图片转换成形状轮廓信息 (:cv_to_shapes)
声明
形状集合, 可视化图像 = 图片:cv_to_shapes([轮廓匹配配置])
参数
-
轮廓匹配配置
可选参数,表型轮廓匹配配置字段
{
should_visualize = false | true, -- 可选参数,是否可视化输出,默认 false
closed = false | true, -- 可选参数,是否闭合图形,默认 false
blur_size = integer_value, -- 可选参数,模糊内核像素,只能为正奇数,默认 3
canny_threshold1 = 100, -- 可选参数,边缘最小阈值,默认 100
canny_threshold2 = 200, -- 可选参数,边缘最大阈值,默认 200
approx_epsilon = integer_value, -- 可选参数,轮廓逼近周长百分率,用于将复杂轮廓简化,默认 2
}
返回值
-
形状集合
表型,图片上的形状们的顶点信息形状形状集合结构
{
{ -- 形状 1
{ -- 形状 1 顶点 1
["y"] = number_value,
["x"] = number_value,
},
{ -- 形状 1 顶点 2
["y"] = number_value,
["x"] = number_value,
},
...
},
{ -- 形状 2
{ -- 形状 2 顶点 1
["y"] = number_value,
["x"] = number_value,
},
{ -- 形状 2 顶点 2
["y"] = number_value,
["x"] = number_value,
},
...
},
...
} -
可视化图像
图片对象,当 options.should_visualize 为 true 时,这个返回值是可视化返回值,它是个图片对象
说明
将图片上的轮廓转换成形状顶点信息
建议需要转换成形状的图片不要搞太复杂,最好是轮廓分明的闭合图形
示例
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, -- 抗毛刺率 0~100
closed = true, -- 闭合图形
should_visualize = true, -- 是否可视化输出,为 true 则第二个返回值是一张图片
})
nLog(shapes) -- 输出形状列表顶点信息
dialog():add_image(visimg):show() -- 可视化查看形状图片