반응형
이미지맥스에서 이미지파일을 검색할때에는 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
이미지검색 조건문이 간략해진것 같습니다.
반응형
'이미지맥스 그리고 루아(lua) > [응용] 내장함수 활용' 카테고리의 다른 글
[이미지맥스] MultiImage() 결과값을 boolean 값으로 받기 isImage() (0) | 2021.07.18 |
---|---|
[이미지맥스] 이미지를 서치하여 클릭하는 함수 clickImage() (0) | 2021.05.04 |
[이미지맥스] 지정영역을 랜덤하게 클릭하는 함수 clickArea() (0) | 2021.05.03 |
[이미지맥스] ImageSearch()결과를 활용하여 클릭하는 함수 clickResult() (0) | 2021.05.02 |
[이미지맥스] 마우스 클릭을 조금만 더 간편하게! click() (0) | 2021.05.02 |