跳至主要內容

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() -- 可視化查看形狀圖片