R içinde bir işlevle uğraştım, uzun bir hikaye kısa, bir for
-loop var ve her adımda, png
kullanarak bir arsa kaydet, sonra hemen readPNG
böylece RGB bilgilerini ayıklayabiliyorum. Daha sonra ikinci bir çizim yapın, sonra readPNG
bu yüzden iki görüntünün RGB'sini karşılaştırabilirim. Sorun şu ki, png()
aygıtını başlatamayan bir hata iletisi almaya veya dosyayı birkaç döngüden sonra açmak için hata ayıklamaya devam etmem gerekiyor (birkaç döngüden olabildiğince az veya birkaç bin). İşte Png aygıtını döngü içinde açılamıyor
testfun<-function(beg,fini)
{
library(png)
setwd("D://mydirectory")
for (i in beg:fini)
{
png("test.png",width=277,height=277) #candidate image
par(mai=c(0,0,0,0))
plot(1,type="n",ann=FALSE,xlim=c(0,255),ylim=c(0,255),
xaxt="n",yaxt="n",frame.plot=F)
polygon(x=c(10,60,60),y=c(10,10,60),col="red")
graphics.off()
image<-readPNG("test.png")
#code where I get rgb values for original
png("test2.png",width=277,height=277) #candidate image with diferent params
par(mai=c(0,0,0,0))
plot(1,type="n",ann=FALSE,xlim=c(0,255),ylim=c(0,255),
xaxt="n",yaxt="n",frame.plot=F)
polygon(x=c(10,60,60),y=c(10,10,60),col="blue")
graphics.off()
image<-readPNG("test2.png")
#code where I get rgb values for second image, and compare
}
}
Ve hata mesajı:
Error in png("test.png", width = 277, height = 277) :
unable to start png() device
In addition: Warning messages:
1: In png("test.png", width = 277, height = 277) :
Unable to open file 'test.png' for writing
2: In png("test.png", width = 277, height = 277) : opening device failed
Başlangıçta
Ben dev.off()
olarak graphics.off()
vardı ama sonra belki de döngü çok hızlı olduğunu düşündüm ki bir cihazı kapatmak, tekrar açılmaya ihtiyaç duymadan önce yeterince hızlı değildi ve bir şekilde 'kafası karışmış' oluyordu. Ayrıca her graphics.off
'dan sonra Sys.sleep(0.1)
kullanmayı denedim, ancak bu da işe yaramadı. Aptalca ve bariz bir şeyi mi özledim yoksa bu sadece bir cihaz hatası mı?
@your Son bir soru (eğik çizgi, ve işareti kesme işareti vb arayın) içeriyordu : dev.off ile ilgili bir sorun yoktur, kod sırayla yürütülür. Bu yüzden her şey hızlı olur, önce cihaz öldürülür ve sonra yeni bir cihaz açılır. –
Bu kodu etkileşimli bir konsolda mı çalıştırıyorsunuz veya ör. 'Rscript'. Ve, 'png' daha da az bir kodla çalışır, örn. : png ("bla.png"), arsa (1:10); dev.off() '. –
Fonksiyonu Tinn-R'den yolluyorum, sonra sadece Rgui'den arayınız. Png kendi kendine iyi çalışıyor. Ama daha önce önerdiğin bir döngüye sahip olduğum basit bir test yazdım. 10 kere kaldı, sorun değil. 100 kez çalıştırdı ve bunu elde etti: png ("test3.png") hatası: png() aygıtını başlatılamıyor Ek: Uyarı iletileri: 1: png ("test3.png"): Yapılamıyor yazmak için 'test3.png' dosyasını açın 2: png'de ("test3.png"): açma aygıtı başarısız oldu (Üzgünüz, bu konuda yeniyim ve bir yorumu biçimlendirmek hala güçlük çekiyor.) – Herc