メインコンテンツまでスキップ

cv - 画像を比較 (:cv_compare_image)

宣言

差分形状セット, 可視化画像 = 画像:cv_compare_image(別の画像[, 画像比較設定])

パラメータ

  • 別の画像
    画像オブジェクト。比較対象の画像

  • 画像比較設定
    テーブル

    画像比較設定のフィールド
    {
    should_visualize = false | true, -- 省略可能。可視化して出力するかどうか。デフォルトは false
    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 img1 = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
local img2 = image.load_file(XXT_SCRIPTS_PATH..'/2.png')
-- 戻り値は形状のリストで、複数の形状が含まれる場合がある
local shapes, visimg = img1:cv_compare_image(img2)
nLog(shapes) -- 形状リストの頂点情報を出力
dialog():add_image(visimg):show() -- 差分形状の画像を可視化して確認