所以我遇到了Sikuli的問題。存在多次出現圖像的情況。要抓住它們,你可以簡單地做一個findAll,但它將每個圖像保存爲某種對象,而不是圖像。我知道你可以使用getLastMatches()來獲取圖像,但是我想先對它進行排序。所以這是我得到的代碼,它抓住所有的圖像並對它們進行排序。我發現了一些信息的Sikuli文檔將迭代器對象從findAll轉換爲Sikuli中的圖像後排序
def by_y(match):
return match.y
icons = findAll(image)
sorted_icons = sorted(icons, key=by_y)
的問題與此有關,不過,是sorted_icons包含一組可迭代的對象(至少這是我所看到的他們的稱呼),而不是圖像。有沒有辦法恢復到圖像,同時保持新列表排序?使用getLastMatches()給出了原始未排序列表的列表。
另外,它是Sikuli 1.0.1。
謝謝。
這應該說明問題(希望)。爲了按y值對圖像進行排序,我必須使用findAll()操作(如果有一種不使用find的方法,請分享)。然而,這將圖像從一個字符串轉換,即:
"imagename.png"
到......嗯什麼,這是(比賽):
M[8,1045 37x28]@S(S(0)[0,0 1920x1080]) S:1.00 Center:26,1059
的self.assets.getimage(圖像)功能要求一個字符串,儘管(所以imagename.png),而不是你使用find的時髦的東西。
def exampleMethod(image, dx=0, dy=0):
click(Pattern(self.assets.getimage(image)).targetOffset(dx, dy))
def by_y(match):
return match.y
image = "imagename.png"
icons = findAll(image)
sorted_icons = sorted(image, key=by_y)
exampleMethod(sorted_icons[0])
因此,我需要1 2的東西:
- 到查找對象轉換回字符串後分類
- 的一種方式,以通過他們的y值圖像進行排序的一種方式,同時保持作爲字符串的圖像
希望這會有所幫助。
我請問你想用圖片做什麼?一個'find'或'findAll'操作使用模式/圖片/屏幕截圖或字符串作爲輸入類型並返回(a)匹配對象,通過它可以完成Sikuli所提供的任何東西... – autoKarma 2014-09-04 17:12:06
there's很多預先存在的方法需要圖像而不是圖案。他們每個人都使用find方法(以及與find相似的自建方法)。我可以提供一些if語句來處理這個問題,但是我不想這樣做會有很多變化。因此,我寧願能夠將它們轉換回圖像並將它們發送到方法 – user2869231 2014-09-05 17:54:03
我不確定我是否清晰 - 圖像和圖案之間有什麼區別?在上面的例子中,'icons = findAll(image)'這裏的「image」是Pattern類型。相反,如果你說'iconNames = findAll(「IconTitle」),那麼IconTitle將是String類型。 findAll()操作接受的唯一兩種類型是Pattern和String。你的意思是圖案和圖像是同一件事嗎? – autoKarma 2014-09-05 19:32:47