求助:Appium中matchImagesFeatures方法无法正常使用问题排查
Appium matchImagesFeatures方法无匹配结果,无法生成可视化对比图
我在Appium框架中使用matchImagesFeatures方法时遇到问题,该方法始终返回无匹配结果,也无法生成预期的可视化对比图。其他图像对比方法(如findImageOccurrence和getImagesSimilarity)均可正常工作,但我需要matchImagesFeatures的灵活性来处理图像缩放与旋转场景。
环境配置
- Appium客户端版本:9.3.0
- Appium服务端版本:2.12.1
- images插件版本:images@3.0.21
- JDK版本:jdk-21.0.5.11-openj9
代码实现
public boolean isImagePresent(String baseImagePath, String secondImagePath) { try { // Load the base image as a byte array byte[] baseImage = Files.readAllBytes(Paths.get(baseImagePath)); byte[] secondImage = Files.readAllBytes(Paths.get(secondImagePath)); // Generate diff image path automatically based on baseline image path String diffImagePath = baseImagePath.replace(".png", "_present_diff.png"); // Perform feature-based image comparison FeaturesMatchingResult result = driver.matchImagesFeatures( baseImage , secondImage, new FeaturesMatchingOptions() .withDetectorName(FeatureDetector.ORB) // Use ORB detector .withGoodMatchesFactor(40) // Adjust match threshold .withMatchFunc(MatchingFunction.BRUTE_FORCE_HAMMING) // Matching function .withEnabledVisualization() // Enable visualization ); System.out.println("result : " + result); // Assertions if (result.getCount() > 0) { Files.write(Paths.get(diffImagePath), result.getVisualization()); System.out.println("Visualization saved at: " + diffImagePath); System.out.println("Match found! Good matches: " + result.getCount()); return true; } else { System.out.println("No match found."); return false; } }catch (Exception e) { e.printStackTrace(); return false; // Return false if an exception occurs } }
控制台输出
result : io.appium.java_client.imagecomparison.FeaturesMatchingResult@87dfcecc No match found.
预期结果
期望生成带有特征匹配连线的可视化对比图,清晰展示两张图像中匹配的特征点关联关系。
内容的提问来源于stack exchange,提问作者Youssef Saib
相关产品推荐
相关产品推荐

