본문 바로가기
이미지맥스 그리고 루아(lua)/[응용] 내장함수 활용

[이미지맥스] 한번에 여러 이미지를 서치하여 boolean으로 반환 함수 isImage(...)

by 위치결정 2022. 2. 12.
반응형
-- MultiImage() 이미지서치 통합 함수 (결과 boolean 반환)
function isImage(...)
    local result_table = {}
    for key, value in pairs({...}) do
        if MultiImage(value) == 1 then
            table.insert(result_table, true)
        else
            table.insert(result_table, false)
        end
    end
    return table.unpack(result_table)
end

그동안 이미지맥스를 활용하면서 이미지 서치의 결과를 boolean 으로 반환 받기 위해 여러 형태로 isImage() 라는 함수를 만들어가면서 사용해왔습니다.

 

이번에는 이전에 만들었던 형태보다 간결하면서도 또한 강력한 기능인 다른 새로운 형태를 소개해드립니다.

함수의 인수 파라미터를 가변인자(...) 로 처리하여 인수로 받아들일수 있는 인자의 갯수가 고정되어있지 않고 지정한 만큼 동작할수 있는 형태입니다.

이로 인해 함수를 정의하고 사용시 여러 이미지를 함수 한줄로 처리 할수 있게 되었습니다.

 

그리고 이미지서치의 결과는 개별 변수로 boolean타입으로 반환 받을수 있습니다.

또한 이미지맥스의 내장 함수 MultiImage() 함수를 활용 하였기 때문에 AND, OR 조건의 여러이미지 동시 서치도 가능합니다.

 

-- 샘플코드1 :: circle, rec 두개의 이미지를 서치 결과를 bool값으로 반환
ret1, ret2 = isImage('circle', 'rec')
-- > 'circle' 이미지의 검색 결과를 변수 ret1 에 boolean 형태로 반환
-- > 'rec' 이미지의 검색 결과를 변수 ret2 에 boolean 형태로 반환


-- 샘플코드2 :: circle, rec 두개의 이미지의 AND, OR 조건 서치결과를 bool 값으로 반환
ret1, ret2 = isImage('circle&rec', 'circel|rec')
-- > 'circle' 이미지와 'rec' 이미지 둘다 검출 (AND) 결과를 변수 ret1 에 boolean 형태로 반환
-- > 'circle' 이미지와 'rec' 이미지 둘 중 하나이상 검출 (OR) 결과를 변수 ret2 에 boolean 형태로 반환

 

보다 스크립트가 간결해질수 있습니다.

반응형

댓글