使用R做人工審核圖片的小工具

jopen 9年前發布 | 9K 次閱讀 R語言

原文 http://www.bjt.name/2015/11/graphics-tools/


這兩天搞了搞深度神經網絡,順帶玩了玩公司的曬單圖片,不過需要人工審核每個文件夾(對應一個sku)下面的圖片是否可以用于模型。 人工審核的意思就是自己一張一張圖片的看,然后刪……真是對人性的折磨啊~~

為了加快效率,所以又讓R不務正業了一把。大致邏輯是:

  1. 獲得所有需要人工審核的子目錄
  2. 將這些子目錄下的圖片全部拼接成一張照片,第一張是曬單的,后面的商品原圖
  3. 人工篩選拼裝圖片,保留可利用的圖片
  4. 根據剩下的圖片id索引原始圖片子目錄

代碼如下:

library(jpeg)
readJPG1 <- function (source)
if(file.size(source) == 0) readJPEG(system.file("img", "Rlogo.jpg", package="jpeg")) else { 
readJPEG(source)
} # 容錯,一旦文件大小為0,則補充R圖片
setwd('C:/Users/liusizhe111/dir') # 生成合并圖像位置
path <- 'C:/Users/liusizhe111/liusizhe' # 目標文件夾
tt <- dir(path) # 第一層目錄包含的文件夾
for (i in 1:length(tt)){
  d1 <- tt[i] # 第i個子文件夾
  dd <- paste(path, '/',  d1, sep = '') # 拼成全路徑
  mm <- dir(dd) # 子文件下面的文件
  n <- length(mm)
  tmp <- list()
  for(j in 1:n){
  file <- paste(dd, '/', mm[j], sep = '')
  tmp[[j]] <- try(readJPG1(file))
}
jpeg(paste(d1, '.jpg', sep = ''), 
      height = 400, width = 400*n) # 按照n生成圖片大小
par(mfcol = c(1,n), mar = rep(0,4))
try(
  for(j in 1:n) {
    plot(1:2, type = 'n', axes = FALSE)
    rasterImage(tmp[[j]], 1.1, 1.1, 1.9, 1.9)
    text(1.5, 1.5, mm[j], col = 'red', cex = 1.2)
  }
)
dev.off()
}

人工審核圖片就簡單了,用ACDSee打開圖片,保留的就空格下一張,不要的就直接del。這樣就剩下了保留的組合。 我們再根據這些圖片索引,移動文件夾就可以了。
candi <- 'C:/Users/liusizhe111/dir'
from <- 'C:/Users/liusizhe111/liusizhe'
todir <- 'C:/Users/liusizhe111/finaldir'
candi <- gsub('.jpg', '', dir(candi))
for (i in candi){
    move <- paste('move ', from, '/', i, ' ', todir, sep = '')
    shell(move)
}

最后給些福利吧,這代碼看起來太枯燥。

使用R做人工審核圖片的小工具

P.S. 看女人曬單真是好折磨,模特和普通用戶差別好大啊~

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!