我想从SWT Image对象中获取感兴趣的区域(ROI)。
我找不到能为我做这个的方法。是否有可能避免自己写一篇文章?
我需要类似的东西(类似于opencv实现):
Image img = new Image(display, path);
Rectangle roi = new Rectangle(0, 0, 10, 10);
Image imgRoi = img.getROI(roi);
答案 0 :(得分:1)
我不知道从一个地区创建图像的基本SWT方法,但是我找到了一个应该在这里执行此操作的片段https://gist.github.com/azhawkes/4347761(作者请给作者Andy Hawkes)。
这里我稍微修改了输入原始图像的方法。我还实施了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);
}