[問題] 批次讀取與處理之問題

作者: bedroom0204 (khkh)   2016-03-24 22:25:29
[問題類型]:
程式諮詢(我想用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)
作者: Wush978 (拒看低質媒體)   2016-03-25 17:09:00
可以, R有for loop, 有sprintf可以湊檔案名稱
作者: bedroom0204 (khkh)   2016-03-29 16:08:00
批次處理我用for解決了,但是上面那邊GPX讀取表格時卻出現missing value where TRUE/FALSE needed以及‘-’ not meaningful for factors的問題。是否是讀取資料的寫法有誤?

Links booklink

Contact Us: admin [ a t ] ucptt.com