यह प्रश्न कुछ हद तक भाषा-अज्ञेयवादी है, लेकिन मेरी पसंद का टूल एक सुस्त सरणी होता है।छवि में रिक्त क्षेत्र ढूंढना
क्या मैं कर रहा हूँ जनहित याचिका के माध्यम से दो छवियों के अंतर ले जा रहा है:
img = ImageChops.difference(img1, img2)
और मैं आयताकार क्षेत्रों है कि एक से दूसरे तस्वीर से परिवर्तन शामिल होने लगाना चाहते हैं। बेशक .getbbox()
विधि में बनाया गया है, लेकिन यदि परिवर्तन वाले दो क्षेत्र हैं तो यह एक क्षेत्र से दूसरे क्षेत्र में एक बॉक्स लौटाएगा, और यदि प्रत्येक कोने में केवल 1 पिक्सेल परिवर्तन हैं तो यह पूरी छवि वापस कर देगा।
______________________
|o ooo |
| oooo ooo |
| o |
| o o |
| |
| oo o |
| o o ooo |
| oo ooooo |
| ooo |
| o |
|____________________|
मैं प्रत्येक गैर शून्य क्षेत्र के लिए सीमांकन बॉक्स युक्त 4x4-tuples प्राप्त करना चाहते हैं:
उदाहरण के लिए निम्नलिखित जहां o
एक गैर शून्य पिक्सेल है पर विचार करें।
oooo
o
o o
संरचना के किनारे मामले के लिए, मैं बहुत चिंतित हैं कि कैसे संभाला है नहीं कर रहा हूँ - या तो दोनों वर्गों अलग या एक साथ हो रही है, क्योंकि उल्टे-एल आकार की सीमा पूरी तरह से एक की सीमा से ओवरलैप होगा पिक्सेल।
मैंने कभी भी छवि प्रसंस्करण के साथ यह कुछ भी नहीं किया है, इसलिए मैं वास्तव में कुछ भी लिखने से पहले कुछ इनपुट प्राप्त करना चाहता था (और यदि मॉड्यूल में पहले से मौजूद तरीके हैं जो मैं पहले से उपयोग कर रहा हूं, तो मैं उनका स्वागत करता हूं!) ।
मेरे psuedocode-ish संस्करण कुछ इस तरह चला जाता है:
for line in image:
started = False
for pixel in line:
if pixel and not started:
started = True
save start coords
elif started and not pixel:
started = False
save end coords (x - 1 of course)
यह मैं निर्देशांक की एक सूची देना चाहिए, लेकिन फिर मैं निर्धारित करने के लिए क्षेत्रों सन्निहित हैं। मैं ग्राफ-प्रकार की खोज के साथ ऐसा कर सकता हूं? (हमने पिछले सेमेस्टर में एल्गोरिदम में बहुत सारे डीएफएस और बीएफएस किए थे) बेशक मुझे लगता है कि मैं इसके बजाय/पिछले पिछले लूप के साथ ऐसा कर सकता हूं?
मैं इसे "बड़ी" छवियों पर नहीं करूँगा - उन्हें वेबकैम से खींचा जाता है और सबसे अच्छा मैं वर्तमान में 640x480 करता हूं। अधिकतर मैं 720 पी या 1080 पी कर रहा हूं, लेकिन भविष्य में यह काफी दूर है कि यह वास्तविक चिंता नहीं है।
तो मेरा प्रश्न है: क्या मैं सही रास्ते पर चला गया हूं, या क्या मैं रास्ता बंद कर रहा हूं? और अधिक महत्वपूर्ण, क्या कोई अंतर्निहित कार्य है जो मुझे पहिया को फिर से आविष्कार करने से रोकता है? और आखिरकार, क्या कोई अच्छा संसाधन है जो मुझे देखना चाहिए (ट्यूटोरियल, कागजात, इत्यादि) जो यहां मदद करेंगे?
धन्यवाद!
पवित्र धूम्रपान करता है कि यह सही है! यही वही है जो मैं चाहता था - और मुझे लगता है कि मैं इसे वास्तव में किनारे के मामले को संभालने के लिए पसंद करता हूं - इस तरह यह वास्तव में * सभी * पिक्सल के लिए बॉक्स प्राप्त करेगा। काश मैं एक बार से अधिक वोट दे सकता है! –
@Wayne - मदद करने में खुशी हुई! एक बार जब आप सीखते हैं कि विभिन्न ऑपरेटरों को एक साथ कैसे स्ट्रिंग करना है, तो scipy.ndimage में फ़ंक्शंस का एक अच्छा बैच है। सौभाग्य! –
@ जोकिंगटन सबसे उपयोगी प्रोग्रामर में से एक है – chimpsarehungry