【问题标题】:Sikuli image processing斯库里图像处理
【发布时间】:2016-04-23 20:11:59
【问题描述】:
我的任务是使用 Sikuli 工具进行自动化测试。我需要知道是否可以使用 Sikuli 处理不在屏幕上的图像,如果可以,如何处理。
任务:到目前为止,我在一个目录中有一个捕获的图像,比如 image1。我在计算机上打开 image1 并从 image1 捕获更多屏幕截图(使用 Sikuli)并将它们存储在一个目录中并继续我的测试。
对于我上面提到的任务,我很好奇我是否可以在不打开计算机上的 image1 并让 Sikuli(或任何 Java API)直接处理该文件的情况下完成所有这些工作。
提前感谢您的帮助。
【问题讨论】:
标签:
user-interface
image-processing
sikuli
【解决方案1】:
我不太确定是否理解这个问题。当然,您可以使用任何图像(不仅是在 Sikuli-IDE 中完成的屏幕截图)。
Sikuli-IDE 允许您截取屏幕截图并将它们存储在文件系统中,但最后,它使用存储在文件系统中的图像(默认情况下,它们存储在模块的文件夹中=您的 python 脚本所在的位置)。
使用 Sikuli-IDE 中的Ctrl+T,您可以在使用屏幕截图的视图和使用图像路径的其他视图之间切换。可以使用来自其他文件夹、其他模块等的图像。
【解决方案2】:
您可以将图像保存在变量中。
img = "D:/path/of/image/image.PNG"
if exists(img,1):
mouseMove(img)
关于保存图片,是保存截图还是只保存图片区域的内容?
【解决方案3】:
使用以下代码将一张图片与另一张图片进行比较,而无需打开并在实际当前屏幕中找到它。
它基本上是图像比较功能。
public static void main () {
String sampleImage = s.capture().getFile();
fn_matchingPattern ( "refImgPath" , sampleImage , double minSim);
}
public static boolean fn_matchingPattern (String refImgPath , String sampleImgPath , double minSim) {
try {
f = null;
f = new Finder(refImgPath);
Pattern tempPattern = new Pattern (sampleImgPath).similar((float) minSim);
f.find(tempPattern);
if (f.hasNext())
return true;
else
return false;
} catch (IOException e) {
LogReport.warn("Exception IOException Please check : Reference Img path " + refImgPath );
return false;
}
}