cv - 이미지에서 윤곽 찾기 (:cv_find_shapes)
선언
찾은 도형 정보, 시각화 이미지 = 이미지:cv_find_shapes(도형 모음[, 도형 찾기 설정])
매개변수
-
도형 모음
테이블형이며, 검색할 하나 이상의 도형에 대한 꼭짓점 정보입니다.도형 모음 구조
{
{ -- 도형 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,
},
...
},
...
} -
도형 찾기 설정
테이블형 선택적 매개변수이며, 윤곽 매칭 설정입니다.도형 찾기 설정 필드
{
should_visualize = false | true, -- 선택적 매개변수, 시각화 결과 출력 여부, 기본값 false
closed = false | true, -- 선택적 매개변수, 도형을 닫을지 여부, 기본값 false
min_area = number_value, -- 선택적 매개변수, 최소 면적, 기본값 -1은 제한 없음
max_area = number_value, -- 선택적 매개변수, 최대 면적, 기본값 -1은 제한 없음
blur_size = integer_value, -- 선택적 매개변수, 블러 커널의 픽셀 크기, 양의 홀수만 가능, 기본값 3
canny_threshold1 = 100, -- 선택적 매개변수, 에지 최소 임계값, 기본값 100
canny_threshold2 = 200, -- 선택적 매개변수, 에지 최대 임계값, 기본값 200
diff_threshold = number_value, -- 선택적 매개변수, 차이값 임계값, 작을수록 더 유사함, 기본값 0.001
approx_epsilon = integer_value, -- 선택적 매개변수, 윤곽 근사 시 둘레에 적용할 백분율로 복잡한 윤곽을 단순화하는 데 사용, 기본값 2
}
반환값
-
찾은 도형 정보
테이블형입니다.찾은 도형 정보 구조
{
{ -- 도형 1과 매칭되는 도형 목록
{ -- 도형 1과 매칭되는 1번째 도형
diff_score = number_value, -- 이 도형과 도형 1 간의 차이값이며 작을수록 더 유사함
{ -- 도형 1과 매칭되는 1번째 도형의 꼭짓점 1
["y"] = number_value,
["x"] = number_value,
},
{ -- 도형 1과 매칭되는 1번째 도형의 꼭짓점 2
["y"] = number_value,
["x"] = number_value,
},
...
},
{ -- 도형 1과 매칭되는 2번째 도형
diff_score = number_value, -- 이 도형과 도형 1 간의 차이값이며 작을수록 더 유사함
{ -- 도형 1과 매칭되는 2번째 도형의 꼭짓점 1
["y"] = number_value,
["x"] = number_value,
},
{ -- 도형 1과 매칭되는 2번째 도형의 꼭짓점 2
["y"] = number_value,
["x"] = number_value,
},
...
},
...
},
{ -- 도형 2와 매칭되는 도형 목록
{ -- 도형 2와 매칭되는 1번째 도형
diff_score = number_value, -- 이 도형과 도형 2 간의 차이값이며 작을수록 더 유사함
{ -- 도형 2와 매칭되는 1번째 도형의 꼭짓점 1
["y"] = number_value,
["x"] = number_value,
},
{ -- 도형 2와 매칭되는 1번째 도형의 꼭짓점 2
["y"] = number_value,
["x"] = number_value,
},
...
},
{ -- 도형 2와 매칭되는 2번째 도형
diff_score = number_value, -- 이 도형과 도형 2 간의 차이값이며 작을수록 더 유사함
{ -- 도형 2와 매칭되는 2번째 도형의 꼭짓점 1
["y"] = number_value,
["x"] = number_value,
},
{ -- 도형 2와 매칭되는 2번째 도형의 꼭짓점 2
["y"] = number_value,
["x"] = number_value,
},
...
},
...
},
...
} -
시각화 이미지
이미지 객체입니다. options.should_visualize가 true이면 이 반환값은 이미지 객체인 시각화 결과입니다.
설명
이미지에서 하나 이상의 도형을 찾습니다.
표준적이고 규칙적인 도형은 함수를 사용해 생성할 수 있습니다.
예제
function make_triangle(side_len) -- 정삼각형 생성. 변 길이 매개변수만 있으면 꼭짓점 3개를 자동 생성
local hf = math.sqrt(3)/2
local h = math.floor(hf * side_len)
return {
{
["x"] = 1,
["y"] = h,
},
{
["x"] = side_len,
["y"] = h,
},
{
["x"] = side_len // 2,
["y"] = 1,
},
}
end
function make_rectangle(side_len) -- 정사각형 생성. 변 길이 매개변수만 있으면 꼭짓점 4개를 자동 생성
return {
{ -- 왼쪽 위
["x"] = 1,
["y"] = 1,
},
{ -- 왼쪽 아래
["x"] = 1,
["y"] = side_len,
},
{ -- 오른쪽 아래
["x"] = side_len,
["y"] = side_len,
},
{ -- 오른쪽 위
["x"] = side_len,
["y"] = 1,
},
}
end
-- 반환값은 여러 도형 목록으로 구성된 목록이며, 각 목록은 매개변수로 전달한 도형별 검색 결과에 해당함
-- 여기서는 정삼각형과 정사각형을 검색함
local info, visimg = screen.image():cv_find_shapes({make_triangle(45), make_rectangle(40)}, {
min_area = 2000, -- 최소 면적
max_area = 20000, -- 최대 면적
diff_threshold = 0.005, -- 최대 변형 허용치, 작을수록 더 유사함
approx_epsilon = 1,
shape_match_mode = 3,
closed = true, -- 닫힌 도형
should_visualize = true, -- 시각화 결과 출력 여부. true이면 두 번째 반환값은 이미지임
})
nLog(info[1]) -- 정삼각형과 매칭되는 도형 목록 출력
nLog(info[2]) -- 정사각형과 매칭되는 도형 목록 출력
dialog():add_image(visimg):show() -- 시각화 이미지 출력