我想从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);
}