Изображения в EBImage - это просто массивы.Чтобы обрезать изображение, вы просто задаете первое и второе измерение массива (которое может иметь более двух измерений).В вашем примере это подмножество будет:
ix <- 200:250
iy <- 100:150
dim(img) # determine the dimensions, 2 in this case
new_img <- img[ix, iy]
plot(new_img)
writeImage(new_img, "new_img.png")
Если вы знаете координаты для каждого изображения, вы просто создаете индекс для каждого изображения, как указано выше.Однако, если вы хотите выбрать часть каждого изображения для обрезки, вы можете использовать locator()
с изображением, нанесенным в виде растрового изображения.
Вот пример взаимодействия с изображением.
# Starting with EBImage loaded
f <- system.file("images", "sample.png", package="EBImage")
img <- readImage(f)
plot(img)
# This call to locator selects two points and places a red mark at each
p <- locator(2, type = "p", pch = 3, col = "red")
print(p)
> $x
> [1] 62.35648 314.30908
>
> $y
> [1] 166.1247 316.4605
# Convert the pairs of coordinates into a index to subset the array
p <- lapply(p, round)
i <- lapply(p, function(v) min(v):max(v))
new_img <- img[i$x, i$y]
plot(new_img)