मैं मैथेमेटिका के साथ वाल्डो को कैसे खोजूं?


1542

यह सप्ताहांत में मुझे परेशान कर रहा था: उन लोगों के वाल्डो को हल करने का एक अच्छा तरीका क्या है ? मैथेमेटिका (छवि-प्रसंस्करण और अन्य कार्यक्षमता) का उपयोग करके उत्तर अमेरिका के बाहर [ 'वैली' ] पहेलियाँ?

यहां मेरे पास अभी तक एक ऐसा फ़ंक्शन है, जो कुछ गैर-लाल रंगों को डुबोकर दृश्य जटिलता को थोड़ा कम करता है:

whereIsWaldo[url_] := Module[{waldo, waldo2, waldoMask},
    waldo = Import[url];
    waldo2 = Image[ImageData[
        waldo] /. {{r_, g_, b_} /;
          Not[r > .7 && g < .3 && b < .3] :> {0, 0,
          0}, {r_, g_, b_} /; (r > .7 && g < .3 && b < .3) :> {1, 1,
          1}}];
    waldoMask = Closing[waldo2, 4];
    ImageCompose[waldo, {waldoMask, .5}]
]

और URL का एक उदाहरण जहां यह 'कार्य' करता है:

whereIsWaldo["http://www.findwaldo.com/fankit/graphics/IntlManOfLiterature/Scenes/DepartmentStore.jpg"]

(वाल्डो कैश रजिस्टर द्वारा है):

मूल छवि

गणितज्ञ ग्राफिक


31
@yoda - शीर्ष बाएं, बहुत सारे जूते के साथ टेबल, एक कैश रजिस्टर और टेबल के कोने के पास वाल्डो।
अर्नॉड बज़िंग

8
कंप्यूटर विज़न में पीएचडी के छात्र के रूप में मैं इस शॉट को देने के लिए बहुत लुभावना हूँ ... लेकिन मुझे विरोध करना चाहिए। यह बहुत ही प्रभावशाली काम (चेतावनी) पीडीएफ के रूप में लायक है, इसके लिए मैं ओरिएंटेड ग्रेडिस्ट + स्लाइडिंग विंडो SVM के हिस्टोग्राम के लिए जाऊंगा ।
डिमातुरा

54
"कहाँ है वैली ।" >। <
ऑर्बिट

2
क्या हम अन्य भाषाओं को भी समर्थन देने के लिए सवाल बदल सकते हैं? मैंने Matlab के साथ इसे करने के बारे में सोचा
एंड्री रुबेश्टिन

2
@ArnoudBuzing: आपके प्रश्न में, आप उस चयन को देखकर वाल्डो को पा सकते हैं, जो उसमें सबसे अधिक सफेद है। : /
तमारा विज्समैन

जवाबों:


1640

मैंने वाल्डो पाया है!

वाल्डो मिल गया था

मैंने इसे कैसे किया है

पहले, मैं उन सभी रंगों को फ़िल्टर कर रहा हूं जो लाल नहीं हैं

waldo = Import["http://www.findwaldo.com/fankit/graphics/IntlManOfLiterature/Scenes/DepartmentStore.jpg"];
red = Fold[ImageSubtract, #[[1]], Rest[#]] &@ColorSeparate[waldo];

अगला, मैं शर्ट में लाल और सफेद संक्रमण को खोजने के लिए एक सरल काले और सफेद पैटर्न के साथ इस छवि के सहसंबंध की गणना कर रहा हूं।

corr = ImageCorrelate[red, 
   Image@Join[ConstantArray[1, {2, 4}], ConstantArray[0, {2, 4}]], 
   NormalizedSquaredEuclideanDistance];

मैं Binarizeएक पर्याप्त उच्च सहसंबंध के साथ छवि में पिक्सेल को बाहर निकालने के लिए उपयोग करता हूं और उनका उपयोग करने पर जोर देने के लिए उनके चारों ओर सफेद सर्कल खींचता हूंDilation

pos = Dilation[ColorNegate[Binarize[corr, .12]], DiskMatrix[30]];

मुझे स्तर के साथ थोड़ा खेलना था। यदि स्तर बहुत अधिक है, तो बहुत सारे झूठे सकारात्मक विकल्प निकाले जाते हैं।

अंत में मैं इस परिणाम को मूल छवि के साथ जोड़ रहा हूँ ताकि परिणाम ऊपर मिल सके

found = ImageMultiply[waldo, ImageAdd[ColorConvert[pos, "GrayLevel"], .5]]

52
@ माइकबांटगुई, जबकि हईक का समाधान बहुत अच्छा है, मैं इसे किसी WhereIsWaldoफ़ंक्शन में पैकेज करना बहुत जल्दी नहीं करूंगा , क्योंकि यह एक सामान्य समाधान नहीं है। हेइके ने खुद बताया है कि सकारात्मक होने से पहले आपको स्तरों के साथ खेलने की आवश्यकता है। यह देखने के लिए कि मेरा क्या मतलब है, अपने पैकेज्ड फंक्शन को आज़माएँ क्योंकि "http://www.findwaldo.com/fankit/graphics/IntlManOfLiterature/Scenes/AtTheBeach.jpg"यह इस एक के साथ कठिन है।
abcd

17
यह छवि पेचीदा है: वाल्डो । मुझे लगता है कि, ऐसा कुछ होना जो संभावित वाल्डोस को उजागर कर सकता है, अभी भी उपयोगी है ('उपयोगी' की कुछ परिभाषा के लिए।) (यह मुझे कुछ ऐसी चीजों की याद दिलाता है, जिन्हें iPhoto कभी-कभी हमारे फोटो संग्रह में एक चेहरे के रूप में पहचाना जाएगा ...)
ब्रेट चैंपियन

33
कृपया इस मेटा पोस्ट को देखें: meta.stackexchange.com/questions/116401/…
को छिपकली

155
आपको लगता है कि वाल्डो कहां के नियमों को गलत समझते हैं। यह स्पष्ट रूप से धोखा है।
स्टीफन केंडल

91
जबकि यह एक अच्छा हैक है, यह सिर्फ काम नहीं करता है। इसके लिए मैनुअल ट्यूनिंग की आवश्यकता होती है और केवल एक छवि पर काम करता है। मुझे समझ में नहीं आता है कि यह क्यों उत्कीर्ण है और यहां तक ​​कि एक उत्तर के रूप में चुना गया है। यह किसी और को भी बेहतर काम करने के तरीकों के साथ जवाब देने की कोशिश करने से रोकता है।
सैम होसेवर

144

"ऐसा करने के लिए बुलेटप्रूफ तरीका" पर मेरा अनुमान है (किसी भी समय किसी भी उपग्रह छवि में वाल्डो को खोजने वाले सीआईए, प्रतिस्पर्धा वाले तत्वों की तरह सिर्फ एक छवि के बिना, धारीदार शर्ट की तरह नहीं ...) मैं वाल्डो की कई छवियों पर एक बोल्ट्जमैन मशीन को प्रशिक्षित करूंगा। - उसके बैठने, खड़े होने, घेरने आदि के सभी प्रकार; शर्ट, टोपी, कैमरा, और सभी काम करता है। आपको वाल्डोस के एक बड़े कॉर्पस की आवश्यकता नहीं है (शायद 3-5 पर्याप्त होगा), लेकिन जितना अधिक बेहतर होगा।

यह सही व्यवस्था में होने वाले विभिन्न तत्वों की संभावनाओं के बादलों को असाइन करेगा, और फिर (विभाजन के माध्यम से) एक औसत वस्तु का आकार क्या है, स्रोत की छवि को उन वस्तुओं की कोशिकाओं में विभाजित करता है जो सबसे अधिक लोगों से मिलते-जुलते हैं (संभव है और संभावित परिवर्तनों को देखते हुए) ), लेकिन चूंकि वाल्डो चित्रों में आमतौर पर बहुत सारे लोग शामिल होते हैं, इसलिए यह एक बहुत ही आसान काम होना चाहिए, फिर पहले से प्रशिक्षित बोल्टज़मन मशीन के इन खंडों को खिलाएं। यह आपको प्रत्येक को वाल्डो होने की संभावना देगा। उच्चतम संभावना के साथ एक ले लो।

इस तरह से OCR, ज़िप कोड रीडर और स्ट्रोकलेस हैंडराइटिंग रिकग्निशन आज काम करते हैं। मूल रूप से आपको पता है कि इसका उत्तर है, आप कम या ज्यादा जानते हैं कि यह कैसा दिखना चाहिए, और बाकी सब में सामान्य तत्व हो सकते हैं, लेकिन निश्चित रूप से "यह नहीं" है, इसलिए आप "नहीं" के साथ परेशान नहीं करते हैं, आप सभी संभावितों के बीच "इट" की संभावना को देखते हुए "यह आपने पहले देखा है" (उदाहरण के लिए ज़िप कोड में, आप बीएम को केवल 1 एस, सिर्फ 2 एस, सिर्फ 3 एस आदि के लिए प्रशिक्षित करेंगे, फिर प्रत्येक को खिलाएं प्रत्येक मशीन के लिए अंक, और जो सबसे अधिक आत्मविश्वास है उसे चुनें) यह सभी संख्याओं के एकल तंत्रिका नेटवर्क सीखने की विशेषताओं की तुलना में बहुत बेहतर है।


13
उसके लिए सिर्फ सादा तंत्रिका नेटवर्क पर्याप्त नहीं हैं? इसके अलावा, विकिपीडिया लेख का दावा है कि बोल्ट्ज़मन मशीनें व्यावहारिक नहीं हैं।
GClaramunt

2
बिना कोशिश किए मुझे यकीन नहीं हो रहा है, लेकिन अगर पर्याप्त और जटिल पर्याप्त तंत्रिका नेटवर्क कुछ भी करने के लिए पर्याप्त होना चाहिए। विशेष रूप से पुनरावृत्ति के साथ। बोल्ट्जमैन मशीनें बहुत ही अच्छे डेटा के समुच्चय के साथ समुद्र के भीतर डेटा की एक बड़ी मात्रा में शोर को पहचानने के लिए बहुत अच्छी तरह से काम करती हैं।
ग्रेगरी क्लोपर

14
बोल्त्ज़मैन मशीनों के साथ हर समय ज़िप कोड पढ़े जाते हैं, और मेल डिलीवरी की सटीकता छत के माध्यम से चली गई है।
ग्रेगरी क्लोपर

47

मैं @GregoryKlopper से सहमत हूं कि अनियंत्रित छवि में वाल्डो (या ब्याज की कोई वस्तु) को खोजने की सामान्य समस्या को हल करने का सही तरीका एक पर्यवेक्षित मशीन सीखने वाले क्लासिफायर को प्रशिक्षित करना होगा। कई सकारात्मक और नकारात्मक लेबल वाले उदाहरणों का उपयोग करते हुए, इस समस्या पर उच्च सटीकता प्राप्त करने के लिए समर्थन वेक्टर मशीन , बूस्टेड डिसीजन स्टंप या बोल्टज़मैन मशीन जैसे एल्गोरिथ्म को प्रशिक्षित किया जा सकता है। गणितज्ञ ने अपने मशीन लर्निंग फ्रेमवर्क में इन एल्गोरिदम को भी शामिल किया है ।

वाल्डो क्लासिफायरियर के प्रशिक्षण के साथ दो चुनौतियां होंगी:

  1. सही छवि सुविधा परिवर्तन का निर्धारण। यह वह जगह है जहां @ हेइके का उत्तर उपयोगी होगा: एक लाल फिल्टर और एक स्ट्रिप्ड पैटर्न डिटेक्टर (जैसे, वेवलेट या डीसीटी अपघटन) कच्चे पिक्सल को एक प्रारूप में बदलने का एक अच्छा तरीका होगा जो वर्गीकरण एल्गोरिदम से सीख सकता है। एक ब्लॉक-आधारित अपघटन जो छवि के सभी उपखंडों का आकलन करता है, की भी आवश्यकता होगी ... लेकिन इस तथ्य से यह आसान हो जाता है कि वाल्डो एक है) हमेशा लगभग एक ही आकार और बी) हमेशा प्रत्येक छवि में एक बार मौजूद होता है।
  2. पर्याप्त प्रशिक्षण उदाहरण प्राप्त करना। एसवीएम प्रत्येक वर्ग के कम से कम 100 उदाहरणों के साथ सबसे अच्छा काम करते हैं। बूस्टिंग के वाणिज्यिक अनुप्रयोग (जैसे, डिजिटल कैमरों में फेस-फ़ोकसिंग) को लाखों सकारात्मक और नकारात्मक उदाहरणों पर प्रशिक्षित किया जाता है।

एक त्वरित Google छवि खोज कुछ अच्छे डेटा को बदल देती है - मैं कुछ प्रशिक्षण उदाहरण एकत्र करने जा रहा हूं और अभी इसे कोड कर रहा हूं!

हालाँकि, यहां तक ​​कि मशीन लर्निंग अप्रोच (या @iND द्वारा सुझाए गए नियम-आधारित दृष्टिकोण) वाल्डोस की भूमि की तरह एक छवि के लिए संघर्ष करेगा !


एक मशीन लर्निंग-बेस्ड कंप्यूटर विज़न सिस्टम जो वास्तविक दुनिया में "व्हेयर वाल्डो" समस्या को हल करने की कोशिश करता है (यानी, फ़्लिकर पर भीड़ की तस्वीरों में किसी विशेष व्यक्ति को खोजने) को पिछले साल कंप्यूटर विज़न और पैटर्न रिकॉग्निशन सम्मेलन में प्रस्तुत किया गया था। वे एक ही दृश्य के कई फ़ोटो का उपयोग करके कुछ 3D स्थान जानकारी जोड़कर थोड़ा धोखा देते हैं।
लूबर

41

मैं गणितज्ञ को नहीं जानता। । । बहुत बुरा। लेकिन मुझे सबसे अधिक भाग के लिए, उपरोक्त उत्तर पसंद है।

अभी भी वहाँ धारियों पर भरोसा करने में एक प्रमुख दोष है अकेले जवाब बटोरने के लिए (मैं व्यक्तिगत रूप से के साथ एक समस्या नहीं है एक मैनुअल समायोजन)। एक उदाहरण है (ब्रेट चैंपियन द्वारा सूचीबद्ध, यहां प्रस्तुत) जो दर्शाता है कि वे, कई बार, शर्ट पैटर्न को तोड़ते हैं। तो फिर यह एक अधिक जटिल पैटर्न बन जाता है।

मैं स्थानिक संबंधों के साथ आकार आईडी और रंगों के दृष्टिकोण की कोशिश करूंगा। चेहरे की पहचान की तरह, आप एक दूसरे से कुछ अनुपात में ज्यामितीय पैटर्न की तलाश कर सकते हैं। चेतावनी यह है कि आमतौर पर उन आकृतियों में से एक या एक से अधिक को आच्छादित किया जाता है।

छवि पर एक सफेद संतुलन प्राप्त करें, और छवि से एक लाल संतुलन लाल करें। मेरा मानना ​​है कि वाल्डो हमेशा एक ही मूल्य / ह्यू है, लेकिन छवि एक स्कैन, या एक खराब कॉपी से हो सकती है। फिर हमेशा उन रंगों के एक सरणी का उल्लेख करें जो वाल्डो वास्तव में है: लाल, सफेद, गहरे भूरे, नीले, आड़ू, {जूता रंग}।

शर्ट पैटर्न है, और पैंट, चश्मा, बाल, चेहरा, जूते और टोपी भी हैं जो वाल्डो को परिभाषित करते हैं। इसके अलावा, छवि में अन्य लोगों के सापेक्ष, वाल्डो पतली तरफ है।

तो, इस तस्वीर में लोगों की ऊंचाई प्राप्त करने के लिए यादृच्छिक लोगों को ढूंढें। छवि में यादृच्छिक बिंदुओं पर चीजों की एक गुच्छा की औसत ऊंचाई को मापें (एक सरल रूपरेखा काफी कुछ व्यक्तिगत लोगों का उत्पादन करेगी)। यदि प्रत्येक चीज एक दूसरे से कुछ मानक विचलन के भीतर नहीं है, तो उन्हें अभी के लिए नजरअंदाज कर दिया जाता है। छवि की ऊँचाई के औसत की तुलना करें। यदि अनुपात बहुत अधिक है (उदाहरण के लिए, 1: 2, 1: 4, या इसी तरह के करीब), तो फिर से प्रयास करें। यह सुनिश्चित करने के लिए 10 बार (?) चलाएं कि नमूने सभी एक साथ बहुत करीब हैं, किसी भी औसत विचलन के बाहर किसी भी औसत को छोड़कर। गणितज्ञ में संभव है?

यह आपका वाल्डो आकार है। वालो पतला है, इसलिए आप 5: 1 या 6: 1 (या जो कुछ भी) की तलाश कर रहे हैं ht: wd। हालांकि, यह पर्याप्त नहीं है। यदि वाल्डो आंशिक रूप से छिपा हुआ है, तो ऊंचाई बदल सकती है। तो, आप लाल-सफेद के एक ब्लॉक की तलाश में हैं जो ~ 2: 1 है। लेकिन अधिक संकेतक होना चाहिए।

  1. वाल्डो में चश्मा है। लाल-सफेद से ऊपर 0.5: 1 दो हलकों के लिए खोजें।
  2. नीली पैंट। लाल-सफेद के अंत और उसके पैरों की दूरी के बीच किसी भी दूरी पर समान चौड़ाई पर नीले रंग की कोई भी राशि। ध्यान दें कि वह अपनी शर्ट छोटी पहनता है, इसलिए पैर बहुत पास नहीं हैं।
  3. टोपी। लाल-सफेद किसी भी दूरी उसके सिर के ऊपर से दो बार तक। ध्यान दें कि इसके नीचे गहरे बाल होने चाहिए, और शायद चश्मा।
  4. लंबी आस्तीन। मुख्य लाल-सफेद से कुछ कोण पर लाल-सफेद।
  5. काले बाल।
  6. जूते का रंग। मैं रंग नहीं जानता।

उनमें से कोई भी आवेदन कर सकता था। ये भी तस्वीर में समान लोगों के खिलाफ नकारात्मक जाँच हैं - उदाहरण के लिए, # 2 एक लाल-सफेद एप्रन पहने हुए भी (जूते के बहुत करीब), # 5 ने हल्के रंग के बालों को खत्म कर दिया। इसके अलावा, आकार इन परीक्षणों में से प्रत्येक के लिए केवल एक संकेतक है। । । निर्दिष्ट दूरी के भीतर अकेले रंग अच्छे परिणाम दे सकता है।

यह क्षेत्रों को संसाधित करने के लिए संकीर्ण कर देगा।

इन परिणामों को संग्रहीत करने से उन क्षेत्रों का एक समूह उत्पन्न होगा जिनके पास वाल्डो होना चाहिए । अन्य सभी क्षेत्रों को छोड़ दें (उदाहरण के लिए, प्रत्येक क्षेत्र के लिए, औसत व्यक्ति के आकार के रूप में दो बार एक सर्कल का चयन करें), और फिर इस प्रक्रिया को चलाएं कि @Heike सभी लेकिन लाल और इतने पर हटाने के साथ रखी गई हो।

यह कैसे कोड के बारे में कोई विचार?


संपादित करें:

यह कोड कैसे करें पर विचार। । । सभी क्षेत्रों को छोड़ दें, लेकिन वाल्डो लाल, लाल क्षेत्रों को कंकाल करते हैं, और उन्हें एक बिंदु तक नीचे झुकाते हैं। वाल्डो हेयर ब्राउन, वाल्डो पैंट ब्लू, वाल्डो शू कलर के लिए भी ऐसा ही करें। वाल्डो त्वचा के रंग के लिए, बाहर करें, फिर रूपरेखा खोजें।

इसके बाद, गैर-लाल को बाहर करें, सभी लाल क्षेत्रों को पतला करें (बहुत सारे), फिर कंकाल और prune। यह भाग संभावित वाल्डो केंद्र बिंदुओं की एक सूची देगा। यह अन्य सभी वाल्डो रंग वर्गों की तुलना करने वाला मार्कर होगा।

यहां से, कंकाल वाले लाल क्षेत्रों (पतले वाले नहीं) का उपयोग करके, प्रत्येक क्षेत्र में लाइनों की गणना करें। यदि सही संख्या (चार, दाएं) है, तो यह निश्चित रूप से एक संभावित क्षेत्र है। यदि नहीं, तो मुझे लगता है कि इसे केवल बाहर करना (वाल्डो केंद्र होने के नाते। यह अभी भी उसकी टोपी हो सकती है)।

फिर जांचें कि क्या ऊपर एक चेहरे का आकार है, ऊपर एक बाल बिंदु, नीचे पैंट बिंदु, नीचे जूता बिंदु, और इसी तरह।

अभी तक कोई कोड नहीं - अभी भी डॉक्स पढ़ रहा है।


8
शायद आप जिस भी सिस्टम / भाषा से परिचित हों, उसमें अवधारणा का प्रमाण दिखा सकते हैं। यह भी आप एक लग रहा है कठिनाइयों जहां के लिए में आते हैं कैसा होगा।
स्ज़बोल्क्स

1
ओह, मैं चुनौती का आनंद ले रहा हूं क्योंकि यह खड़ा है। यह मुझे समुद्र तट पर सैर और रात के खाने के लिए ड्रेसिंग के बीच कुछ करने के लिए देता है।
IND

1
इसलिए। । । डाउनवोट्स क्यों? यह यहाँ अन्य सट्टा जवाब से अलग कैसे है? क्या यह सुझाव है कि इस प्रश्न को अधिक गंभीरता से लिया जाना चाहिए? या सिर्फ यह कि मुझे अपनी जाँच में अधिक गंभीर लगना चाहिए? क्या मेरा दृष्टिकोण वास्तव में गलत है?
Ind

3
मैंने आपको निराश नहीं किया और मुझे नहीं लगता कि जवाब देने के लिए ईमानदार प्रयास (जब तक वे गलत सूचना नहीं देते) के लिए डाउनवोट उपयुक्त हैं। चढ़ाव के लिए सबसे संभावित कारण यह है कि आपने (काफी जटिल लग रहा है) दृष्टिकोण की कोशिश नहीं की थी, और एक अच्छा समाधान खोजने से शायद व्यावहारिक प्रयोग और कई विचारों को खारिज कर दिया जाएगा। अन्य सट्टा उत्तर एक सुझाव देता है सामान्य विधि (एक प्रारंभिक बिंदु के रूप में) का समान समस्याओं के लिए अतीत में उपयोग किया गया है, और इस पर साहित्य की एक अच्छी मात्रा है। बस समझाने की कोशिश कर रहा था कि क्या हुआ।
शेजाबल्क्स

स्पष्टीकरण के लिए धन्यवाद। मुझे लगता है कि मैं विचारों के इतिहास पर ध्यान केंद्रित नहीं कर रहा हूं।
१२:१५

2

मेरे पास OpenCV का उपयोग करके वाल्डो को खोजने का एक त्वरित समाधान है।

मैंने वाल्डो को खोजने के लिए ओपनसीवी में उपलब्ध टेम्पलेट मिलान फ़ंक्शन का उपयोग किया ।

ऐसा करने के लिए एक टेम्पलेट की आवश्यकता है। इसलिए मैंने वाल्डो को मूल छवि से क्रॉप किया और इसे एक टेम्पलेट के रूप में उपयोग किया।

यहां छवि विवरण दर्ज करें

आगे मैंने सामान्यीकृत सहसंबंध गुणांकcv2.matchTemplate() के साथ फ़ंक्शन का उपयोग किया विधि के रूप में। यह एक एकल क्षेत्र में उच्च संभावना लौटा देता है जैसा कि नीचे सफेद में दिखाया गया है (कहीं शीर्ष बाएं क्षेत्र में):

यहां छवि विवरण दर्ज करें

उच्चतम संभावित क्षेत्र की स्थिति का उपयोग कर पाया गया था cv2.minMaxLoc() फ़ंक्शन करते , जिसका मैंने वाल्डो को उजागर करने के लिए आयत को आकर्षित करने के लिए किया था:

यहां छवि विवरण दर्ज करें


7
एसओ के सबसे प्रसिद्ध छवि प्रसंस्करण सवालों से निपटने की कोशिश कर रहा है? ;) आपका समाधान अच्छा और आसान है, लेकिन ए / केवल इस विशिष्ट छवि के लिए काम करता है और बी / वाल्डो की सटीक छवि की आवश्यकता है जिसे आप पहले से ढूंढना चाहते हैं, जबकि मुझे लगता है कि सवाल किसी भी "वाल्डो छवि" में किसी भी वाल्डो को खोजने के बारे में था। आप सामान्य खेल खेलेंगे: बिना यह जाने कि वह पहले से कैसा दिखता है। यह सवाल किसी भी तरह से बहुत मज़ेदार है
सोलिटस

@ सॉलिटस हा बिल्कुल !!! मैंने इसे केवल इस छवि के लिए विशेष रूप से काम किया। विभिन्न छवियों के लिए इसे काम करना हालांकि एक चुनौती होगी !!
जेरु ल्यूक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.