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() -- 形状画像を可視化して表示