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

[이미지맥스] MultiImage() 결과값을 boolean 값으로 받기 isImage()

by 위치결정 2021. 7. 18.
반응형

2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기

 

이전 글에서 ImageSearch() 함수를 이용하여 이미지 검색 결과를 0 혹은 1이 아닌 참(true) 혹은 거짓(false) 으로 리턴받아 if조건문에서 보다 간결하게 사용할수 있는 방법을 알아보았었습니다.

 

그러나 이러게 해도 여러개의 이미지를 AND 혹은 OR 조건으로 검색시 마찮가지로 함수를 여러번 사용하여 논리회로를 구성해야하기 때문에 코드가 길어지는 결과를 낳게 됩니다.

 

이렇게 이미지를 여러개 동시에 검색해야 하는 경우 가장 알맞는 기능을 이미지맥스에서는 이미 제공하고있습니다.

바로 MultiImage() 멀티이미지검색 함수입니다.

과거에 다룬적이 있으므로 해당 글에서 자세한 내용을 확인해주시면 좋을듯합니다.

2021.04.05 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] lua 내장함수 멀티이미지 검색 MultiImage()

 

그러면 이 MultiImage() 함수를 이용하여 과거에 했던것처럼 결과를 boolean 값으로 받는다면, 이미지를 하나를 검색하든 여러개를 검색하든, AND 조건으로 검색하든 OR조건으로 검색하든 보다 간결하게 검색을 해낼수있습니다.

 

function isImage(image_string)
    local boolean
    if type(image_table) == 'string' then
        if MultiImage(image_string) == 1 then
            boolean = true
        end
    end
    return boolean
end

-- 인수 : 검색할 이미지의 파일 이름

 

이전에는 동일한 함수를 ImageSearch() 함수를 이용하여 활용하였지만, 이번에는 동일한 함수를 MultiImage() 함수로 교체하였습니다.

 

이 작은 변화를 통해 기존에는 이미지 하나만 검색할수 있었지만 이제 이미지를 하나를 검색하든, 여러개를 검색하든 어떤 상황에도 사용할수 있는 전천후 함수가 되었습니다.

-- 샘플 코드
-- #1 이미지1 을 발견하면 동작하는 경우
if isImage('img1') then
    print('이미지1을 발견하였습니다.')
end


-- #2 이미지1과 이미지2 를 모두 발견되어야 동작하는 경우
if isImage('img1&img2') then
    print('이미지1과 이미지2를 발견하였습니다.')
end

-- #3 이미지1과 이미지2 중 하나라도 발견되면 동작하는 경우
if isImage('img1|img2') then
    print('이미지1과 이미지2 중 하나를 발견하였습니다.')
end


-- 내장함수만을 사용하여 작성시
-- #1 이미지1 을 발견하면 동작하는 경우
if MultiImage('img1') == 1 then
    print('이미지1을 발견하였습니다.')
end

-- #2 이미지1과 이미지2 를 모두 발견되어야 동작하는 경우
if MultiImage('img1&img2') == 1 then
    print('이미지1과 이미지2를 발견하였습니다.')
end

-- #3 이미지1과 이미지2 중 하나라도 발견되면 동작하는 경우
if MultiImage('img1|img2') == 1 then
    print('이미지1과 이미지2 중 하나를 발견하였습니다.')
end

 

이미지검색 조건문이 더더욱 간략해진것 같습니다.

 

반응형

댓글