作者bedroom0204 (khkh)
看板R_Language
标题[问题] 批次读取与处理之问题
时间Thu Mar 24 22:25:29 2016
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
新手(没写过程式,R 是我的第一次)
[问题叙述]:
没写过程式...纯新手,如果问题很笨,真的非常抱歉......我会再努力搞懂。
最近尝试用R进行简单的影像处理,
我有一份数据档(.tsv)以及一堆影像档(test1 00001.jpg~test1 21143.jpg),
想根据数据档中具有座标,
想依次让影像档产生滤镜,也就是除了座标点的周围外都黑的。
目前去搜寻了一些方法能制作单一张图(但还是有点搞不懂意思),
但是却找不到批次处理多张图片的方法。
有看到C++利用for(int i=0; i<=10; i++){...再组合成字串的方式,
如果R的概念相同,那这个i是否也可以运用到下方的GPX上,
让不同图片可以对应到不同列的座标。
[程式范例]:
http://ideone.com/Kyu4j3
library("jpeg")
#针对特定座标以外的距离变黑
dat <-read.csv("D:\\...\\MRT.tsv",header=FALSE,stringsAsFactors=TRUE,sep="\t")
orgpic = readJPEG("D:\\...\\old folder\\test1 00001.jpg")
gazepoint<-function(orgpic,intensity)
{
newpic=orgpic
dx=dim(orgpic)[1]
dy=dim(orgpic)[2]
GPX=dat[2,35] #test1 00001.jpg需要第35行第2列之X座标
GPY=dat[2,36] #test1 00001.jpg需要第36行第2列之Y座标
#但test1 00002.jpg则需要第35与36行,第3列之X与Y座标
intensity=max(c(dx,dy))
D2=intensity^2/64
for(i in 1:dx)
{
for(j in 1:dy)
{
d=(i-GPX)^2+(j-GPY)^2
if(d>D2) newpic[i,j,]=newpic[i,j,]*exp(-(d-D2)/D2*intensity)
}
}
return(newpic)
}
writeJPEG(gazepoint(orgpic), target ="D:\\...\\new folder\\test 00001.jpg",
quality = 0.95)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.247.82.50
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1458829533.A.675.html
※ 编辑: bedroom0204 (27.247.82.50), 03/24/2016 22:26:24
※ 编辑: bedroom0204 (27.247.82.50), 03/24/2016 22:26:52
1F:→ Wush978: 可以, R有for loop, 有sprintf可以凑档案名称 03/25 17:09
2F:→ bedroom0204: 批次处理我用for解决了,但是上面那边GPX读取表格时 03/29 16:08
3F:→ bedroom0204: 却出现missing value where TRUE/FALSE needed 03/29 16:09
4F:→ bedroom0204: 以及‘-’ not meaningful for factors的问题。 03/29 16:09
5F:→ bedroom0204: 是否是读取资料的写法有误? 03/29 16:10