跳到主要内容

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() -- 可视化查看形状图片