본문으로 건너뛰기

cv - 이미지 다중 템플릿 특징 감지 (:cv_detect_templates)

선언

결과 모음, 시각화 이미지 = 이미지:cv_detect_templates(작은 이미지 템플릿 모음 및 옵션)

매개변수

  • 작은 이미지 템플릿 모음 및 옵션
    선택적 매개변수이며 테이블형입니다. 테이블의 각 순차 요소는 이미지 객체이고, 이름이 지정된 필드는 옵션입니다.

    옵션 필드
    {
    should_visualize = false | true, -- 선택적 필드, 시각화 결과 출력 여부, 기본값 false
    detector = 0 | 1 | 2, -- 선택적 필드, 특징 감지기, 0: ORB, 1: SIFT, 2: SURF, 기본값 0: ORB
    score_thresh = number_value, -- 선택적 필드, 백분율 기준 특징점 매칭 점수 임계값, 기본값 90
    }

반환값

  • 결과 모음
    테이블형이며, 이미지에서 감지된 템플릿 특징 정보의 모음입니다.

    감지 결과 모음 구조
    {
    { -- 결과 1
    { -- 결과 1 꼭짓점 1
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 결과 1 꼭짓점 2
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 결과 1 꼭짓점 3
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 결과 1 꼭짓점 4
    ["y"] = number_value,
    ["x"] = number_value,
    },
    confidence = number_value, -- 결과 1의 모든 특징점에 대한 종합 신뢰도
    angle = number_value, -- 회전 각도
    index = number_value, -- 매칭된 템플릿의 작은 이미지 템플릿 모음 내 인덱스
    },
    { -- 결과 2
    { -- 결과 2 꼭짓점 1
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 결과 2 꼭짓점 2
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 결과 2 꼭짓점 3
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 결과 2 꼭짓점 4
    ["y"] = number_value,
    ["x"] = number_value,
    },
    confidence = number_value, -- 결과 2의 모든 특징점에 대한 종합 신뢰도
    angle = number_value, -- 회전 각도
    index = number_value, -- 매칭된 템플릿의 작은 이미지 템플릿 모음 내 인덱스
    },
    ...
    }
  • 시각화 이미지
    이미지 객체입니다. options.should_visualize가 true이면 이 반환값은 이미지 객체인 시각화 결과입니다.

설명

이미지에서 작은 이미지 템플릿 모음에 포함된 이미지 특징을 감지하며, 변형되거나 회전된 특징 감지에 사용할 수 있습니다.
각 작은 이미지 템플릿에서는 점수가 score_thresh를 초과하는 최적 결과만 매칭됩니다.
20250625 이상 버전에서 지원

주의

매개변수의 score_thresh와 반환값의 confidence는 서로 다릅니다.
score_thresh는 특징점을 선별하는 데 사용되고, confidence는 템플릿의 모든 특징점을 종합한 신뢰도입니다.

예제

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 results, visimg = screen.image():cv_detect_templates({
img1, img2;
score_thresh = 90,
detector = 1, -- SIFT
should_visualize = true, -- 시각화 결과 출력 여부. true이면 두 번째 반환값은 이미지임
})

nLog(results) -- 감지 결과 정보 출력
dialog():add_image(visimg):show() -- 감지 결과 이미지를 시각화하여 확인