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

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

by 위치결정 2021. 3. 29.
반응형

이미지맥스에서 이미지파일을 검색할때에는 ImageSearch() 라는 이미지맥스의 내장함수를 사용합니다.

정확한 사용법을 모르시겠다면 아래 링크를 참조해주시기바랍니다.

2021.03.04 - [이미지맥스, lua/배워보기] - [이미지맥스] 루아 내장함수 이미지찾기 ImageSearch()

 

1. 이미지 검색 함수를 boolean 으로 리턴받기

ImageSearch() 함수의 리턴값은 (0, 1) 로 정수형태로 돌아옵니다.

루아의 특성상 0, 1은 둘다 true 로 취급되어 만일 if문에서 활용하기위해서는 비교문으로 활용을 해야합니다.

-- #1. ret값 변수를 지정하기
local ret = ImageSearch('image_file')
if ret == 1 then
    print('이미지를 발견하였습니다')
end


-- #2. if문에서 바로 비교
if ImageSearch('image_file') == 1 then
    print('이미지를 발견하였습니다')
end

 

그런데 이렇게 코딩을 하다보니 매번 비교문을 넣어야해서 로직이 좀 길어지는 기분이 듭니다.

좀더 짧고 boolean (true, false) 로 이미지검색 결과를 제어하고 싶어졌습니다.

다음과 같은 함수를 만들어 활용한다면 가능하겠죠.

-- ImageSearch() 이미지서치 결과를 Boolean 값으로 반환 받는 함수
function isImage(img_string)
    local boolean
    local ret = ImageSearch(img_string)
    if ret == 1 then
        boolean = true
    end
    return boolean
end

-- 인수 : 검색할 이미지 이름(img_string)
-- 반환 : 이미지 검색 결과 (이미지 인식시:True, 미인식시:False)

 

isImage() 함수를 만들어 인수에는 검색할 이미지이름을 넣습니다.

그러면 ImageSearch() 함수를 통해 boolean 결과값이 리턴되게끔 한것입니다.

이 함수를 이용하면 다음과 같이 다양한 형태로 로직을 코딩할수 있습니다.

-- #1. 이미지 1개를 검색하여 결과 출력
local ret = isImage('image_file')
if ret then
    print('이미지를 발견하였습니다')
end

if isImage('image_file') then
    print('이미지를 발견하였습니다')
end


-- #2. 이미지 2개이상을 검색하여 결과 출력 (and, or 이용)
local ret1 = isImage('image1_file')
local ret2 = isImage('image2_file')
if ret1 or ret2 then
    print('이미지1 혹은 이미지2를 발견하였습니다')
end

if isImage('image1_file') or isImage('image2_file') then
    print('이미지1 혹은 이미지2를 발견하였습니다')
end
if isImage('image1_file') and isImage('image2_file') then
    print('이미지1, 이미지2를 모두 발견하였습니다')
end


-- #3. 이미지가 없는 경우 결과 출력
if not isImage('image_file') then
    print('이미지를 발견하지 못하였습니다')
end

 

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

반응형

댓글