使用R将jpg转换为greyscale csv

时间:2014-12-15 17:46:58

标签: r csv jpeg grayscale kaggle

我有一个JPG图像的文件夹,我试图为一个讨人喜欢的比赛进行分类。我已经看到Python中的一些代码,我认为会在论坛上实现这一点,但是想知道是否可以在R中完成?我试图将许多jpg图像的此文件夹转换为csv文件,其中数字显示每个像素的灰度,类似于此处的手数字识别器http://www.kaggle.com/c/digit-recognizer/

所以基本上是jpg - > R中的.csv,显示用于分类的每个像素的灰度数。我想在其上放置一个随机森林或线性模型。

1 个答案:

答案 0 :(得分:8)

有一些关于如何在此link执行此操作的公式。 raster包是一种方法。这基本上将RGB波段转换为一个黑白带(它使它的尺寸更小,我猜你想要的。)

library(raster)
color.image <- brick("yourjpg.jpg")

# Luminosity method for converting to greyscale
# Find more here http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/
color.values <- getValues(color.image)
bw.values <- color.values[,1]*0.21 + color.values[,1]*0.72 + color.values[,1]*0.07

我认为EBImage包也可以解决此问题(不在CRAN上,通过source安装:

source("http://bioconductor.org/biocLite.R")
biocLite("EBImage")
library(EBImage)

color.image <- readImage("yourjpg.jpg")
bw.image <- channel(color.image,"gray")
writeImage(bw.image,file="bw.png")