में पीएनजी डिवाइस खोलने में असमर्थ, मैं आर में एक समारोह के साथ झुका रहा हूं, जहां लंबी कहानी छोटी है, मेरे पास for
-loop है, और प्रत्येक चरण में, मैं png
का उपयोग करके एक साजिश बचाता हूं, फिर तुरंत readPNG
ताकि मैं आरजीबी जानकारी निकाल सकूं। मैं फिर एक दूसरी साजिश बना देता हूं, फिर readPNG
यह इसलिए मैं दो छवियों के आरजीबी की तुलना कर सकता हूं। समस्या यह है कि मुझे png()
डिवाइस को शुरू करने में असमर्थ होने के बारे में एक त्रुटि संदेश प्राप्त होता है, या कई लूप के बाद फ़ाइल लिखने के लिए फ़ाइल खोलने के लिए (कुछ हद तक लूप के रूप में कम हो सकता है, या कुछ हजार)।लूप
यहाँ वास्तव में कोड सरल है, लेकिन यह नंगे अनिवार्य है, और उत्पन्न त्रुटि संदेश:
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
}
}
और त्रुटि संदेश:
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
मूल रूप से मैं dev.off()
के रूप में था, लेकिन graphics.off()
तो सोचा कि शायद लूप इतना तेज था कि एक डिवाइस को बंद करना फिर से खोलने की आवश्यकता से पहले पर्याप्त तेज़ नहीं था और यह किसी भी तरह 'भ्रमित' हो रहा था। मैंने प्रत्येक graphics.off
के बाद Sys.sleep(0.1)
का उपयोग करने का भी प्रयास किया, लेकिन इससे कोई मदद नहीं मिली। क्या मुझे कुछ बेवकूफ और स्पष्ट याद आ रही है, या यह सिर्फ एक डिवाइस बग है?
@your अंतिम सवाल (स्लैश, एम्पेरसैंड्स, अक्षर लोप आदि के लिए देखो) सुनिश्चित करें कि फ़ाइल नाम कानूनी है निहित : dev.off के साथ कोई समस्या नहीं है, कोड अनुक्रम में निष्पादित किया गया है। तो हालांकि सब कुछ तेज़ होता है, पहले डिवाइस मारे जाते हैं और फिर एक नया डिवाइस खुला होता है। –
क्या आप इस कोड को एक इंटरैक्टिव कंसोल में चलाते हैं, या उदाहरण का उपयोग करते हैं 'Rscript'। और, 'png' एक और अधिक न्यूनतम कोड के साथ काम करता है, उदा। : 'पीएनजी (" bla.png "); साजिश (1:10); dev.off()'। –
मैं टिन-आर से फ़ंक्शन भेजता हूं, फिर इसे Rgui से कॉल करें। पीएनजी अपने आप ठीक काम करता है। लेकिन मैंने अभी एक सरल परीक्षण लिखा था जहां मेरे पास एक लूप में आपके द्वारा सुझाए गए कोड थे। इसे 10 बार, कोई समस्या नहीं है। इसे 100 बार चलाएं, और यह मिला: पीएनजी में त्रुटि ("test3.png"): पीएनजी() डिवाइस शुरू करने में असमर्थ इसके अलावा: चेतावनी संदेश: 1: पीएनजी ("test3.png") में असमर्थ: असमर्थ लिखने के लिए खुली फ़ाइल 'test3.png' 2: पीएनजी ("test3.png") में: डिवाइस खोलने में विफल रहा (क्षमा करें, मैं इस पर नया हूं और एक टिप्पणी स्वरूपण अभी भी मुझे परेशानी पैदा कर रहा है।) – Herc