如何从 SWT 映像中获取感兴趣区域



我想从SWT Image对象中获取感兴趣区域(ROI(。

找不到可以为我执行此操作的方法。有没有可能避免自己写一个?

我需要类似的东西(类似于opencv实现(:

Image img = new Image(display, path);
Rectangle roi = new Rectangle(0, 0, 10, 10);
Image imgRoi = img.getROI(roi);
我不知道从

某个区域创建图像的基本 SWT 方法,但我找到了一个应该在这里执行此操作的代码片段 https://gist.github.com/azhawkes/4347761(归功于作者安迪霍克斯(。

在这里,我稍微修改了该方法以输入原始图像。我还实现了 greg-449 建议的优化(最大限度地减少了对 Image.getImageData 的调用(。

public static Image loadImageFromRegion(Image original, Rectangle region) {
    ImageData originalImageData = original.getImageData();
    ImageData data = new ImageData(region.width, region.height, originalImageData.depth, originalImageData.palette);
    int[] pixels = new int[region.width];
    byte[] alphas = new byte[region.width];
    for (int y = 0; y < region.height; y++) {
        originalImageData.getAlphas(region.x, region.y + y, region.width, alphas, 0);
        originalImageData.getPixels(region.x, region.y + y, region.width, pixels, 0);
        data.setPixels(0, y, region.width, pixels, 0);
        data.setAlphas(0, y, region.width, alphas, 0);
    }
    return new Image(Display.getCurrent(), data);
}

最新更新