← Back to team overview

sikuli-driver team mailing list archive

[Question #684119]: Finder object does not reload image when reinstantiated after the image is modified

 

New question #684119 on Sikuli:
https://answers.launchpad.net/sikuli/+question/684119

I have a code to perform analysis on a local image using Finder object.
The local image (temporary file) is generated from multiple screen capture, overwriting previous one once analysis is done.

I did not have problem in overwriting temporary image, however the analysis function gives always the same value, unchanging from initial image generated.
It seems the file is stored in memory and does not update when new image file is copied and overwritten by new file, even Finder.destroy() runs each time.

Simple code to replicate(tested on openJDK 12.0.2,  sikulix: 2019-09-17_07:10 Build 381):

# -*- coding: utf-8 -*-

import shutil
import os
from sikuli import *

def countPatternFromFile(imgFile,pattern):
    addImagePath("C:/tmp/")
    dest = shutil.copy(imgFile, "C:/tmp/temp.png")
    checkImgFile = Finder("C:/tmp/temp.png")
    print(imgFile)
    checkImgFile.findAll(pattern)
    matches=[]
    if checkImgFile.hasNext():#if the result is found
        while checkImgFile.hasNext(): # loop as long there is a first and more matches
            matches.append(checkImgFile.next())        # access next match and add to matches
            print checkImgFile.hasNext() # is False, because f is empty now
    checkImgFile.destroy()
    os.remove("C:/tmp/temp.png")
    removeImagePath("C:/tmp/")
    return len(matches)

if __name__ == "__main__": 
    addImagePath("C:/src/")
    stars = ["C:/src/3stars.png",
            "C:/src/5stars.png",
            "C:/src/0stars.png"]
    for starimg in stars:    
        count=countPatternFromFile(starimg,"C:/src/star.png")
        print(count)    

This code worked in past build (around build 200~), but not in recent build.
Was there a change in behaviour?
Can there be some method to explicitly reload a file for Finder object?

Thank you.

-- 
You received this question notification because your team Sikuli Drivers
is an answer contact for Sikuli.