Существует ли функция R для извлечения изображений на основе уникальной даты и отметки времени? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть набор фотографий из ловушек камеры с несколькими изображениями с одинаковыми отметками даты и времени.Мне нужно извлечь одну фотографию для каждой отметки времени в наборе.Мне нужна каждая фотография, где есть только одна фотография с этой отметкой даты и времени.Тогда для любых нескольких отметок даты и времени я всегда должен делать только второе фото.Например.Одна фотография, X, отметка времени 13:22:42, я хочу фотографию X;три фотографии, a, b и c, имеют метку времени 13:22:43, я хочу b.Семь фотографий, 1, 2, 3, 4, 5, 6 и 7 имеют метку времени 13:22:44, я хочу 2.

Я совершенно новичок в R, но подумал, что это звучит какэто может быть в состоянии сделать!Я пробовал поиск в Google, но не очень-то удачно.

Я надеюсь, что смогу переименовать все фотографии, которые хочу легко скопировать, и вставить их в новый альбом, или в идеале сделать так, чтобы R извлек их в новыйпапка для меня.Возможно ли это?

1 Ответ

0 голосов
/ 30 мая 2019

Если вы пытаетесь использовать системную метку времени «Создано в», это один из способов сделать это. Сначала мы получаем список имен файлов. Затем мы используем file.info, чтобы получить время «Создано в». Затем мы группируем по отметке времени и создаем идентификатор группировки с row_number. Затем мы фильтруем второе изображение id == 2, где max(id) >= 2, в противном случае, если используется только одно изображение, мы используем id == 1. Затем мы можем создать новую папку и скопировать туда выбранные изображения.

library(tidyverse)    

setwd(choose.dir())

# select the folder with your images in it

files <- list.files()

keep <- files %>% file.info() %>% 
  select(ctime) %>% 
  rownames_to_column("file") %>%
  group_by(ctime) %>% 
  mutate(id = row_number()) %>% 
  filter(id == min(max(id),2)) %>% 
  pull(file)

# at this point `keep` is a list of file names meeting the specified criteria

dir.create("Keep")

file.copy(keep, paste0("./Keep/", keep))
...