You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ne/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md

16 KiB

छवि कैप्चर गर्नुहोस् - रास्पबेरी पाई

यस पाठको यस भागमा, तपाईं आफ्नो रास्पबेरी पाईमा क्यामेरा सेन्सर थप्नुहुनेछ र यसबाट छविहरू पढ्नुहुनेछ।

हार्डवेयर

रास्पबेरी पाईलाई क्यामेरा चाहिन्छ।

तपाईंले प्रयोग गर्ने क्यामेरा रास्पबेरी पाई क्यामेरा मोड्युल हो। यो क्यामेरा रास्पबेरी पाईसँग काम गर्न डिजाइन गरिएको हो र पाईमा समर्पित कनेक्टरमार्फत जडान हुन्छ।

💁 यो क्यामेराले क्यामेरा सिरियल इन्टरफेस, मोबाइल इन्डस्ट्री प्रोसेसर इन्टरफेस एलायन्सबाट आएको प्रोटोकल प्रयोग गर्दछ, जसलाई MIPI-CSI भनेर चिनिन्छ। यो छविहरू पठाउनको लागि समर्पित प्रोटोकल हो।

क्यामेरा जडान गर्नुहोस्

क्यामेरा रिबन केबल प्रयोग गरेर रास्पबेरी पाईमा जडान गर्न सकिन्छ।

कार्य - क्यामेरा जडान गर्नुहोस्

रास्पबेरी पाई क्यामेरा

  1. पाईलाई पावर अफ गर्नुहोस्।

  2. क्यामेरासँग आउने रिबन केबललाई क्यामेरामा जडान गर्नुहोस्। यसका लागि, होल्डरमा रहेको कालो प्लास्टिक क्लिपलाई हल्का तान्नुहोस् ताकि यो अलिकति बाहिर आउँछ, त्यसपछि केबललाई सकेटमा स्लाइड गर्नुहोस्। निलो पक्ष लेन्सबाट टाढा र धातु पिन स्ट्रिपहरू लेन्सतर्फ फर्किएको हुनुपर्छ। यो पूर्ण रूपमा भित्र गएपछि, कालो प्लास्टिक क्लिपलाई पुन: ठाउँमा धकेल्नुहोस्।

    रास्पबेरी पाई क्यामेरा मोड्युलको दस्तावेजमा क्लिप खोल्ने र केबल जडान गर्ने तरिका देखाउने एनिमेसन फेला पार्न सकिन्छ।

    रिबन केबल क्यामेरा मोड्युलमा जडान गरिएको

  3. पाईबाट Grove Base Hat हटाउनुहोस्।

  4. रिबन केबललाई Grove Base Hat को क्यामेरा स्लटबाट पास गर्नुहोस्। सुनिश्चित गर्नुहोस् कि केबलको निलो पक्ष एनालग पोर्टहरू A0, A1 आदि तर्फ फर्किएको छ।

    रिबन केबल Grove Base Hat मार्फत पास हुँदै

  5. रिबन केबललाई पाईको क्यामेरा पोर्टमा जडान गर्नुहोस्। फेरि, कालो प्लास्टिक क्लिपलाई माथि तान्नुहोस्, केबललाई जडान गर्नुहोस्, त्यसपछि क्लिपलाई पुन: ठाउँमा धकेल्नुहोस्। केबलको निलो पक्ष USB र इथरनेट पोर्टतर्फ फर्किएको हुनुपर्छ।

    रिबन केबल पाईको क्यामेरा सकेटमा जडान गरिएको

  6. Grove Base Hat पुन: फिट गर्नुहोस्।

क्यामेरा प्रोग्राम गर्नुहोस्

अब रास्पबेरी पाईलाई PiCamera पायथन लाइब्रेरी प्रयोग गरेर क्यामेरा चलाउन प्रोग्राम गर्न सकिन्छ।

कार्य - लेगेसी क्यामेरा मोड सक्षम गर्नुहोस्

दुर्भाग्यवश, रास्पबेरी पाई OS Bullseye को रिलीजसँगै, OS सँग आएको क्यामेरा सफ्टवेयर परिवर्तन भयो, जसका कारण PiCamera डिफल्ट रूपमा काम गर्दैन। यसको विकल्पको रूपमा PiCamera2 नामक नयाँ सफ्टवेयर विकास भइरहेको छ, तर यो प्रयोग गर्न तयार छैन।

हालको लागि, तपाईं आफ्नो पाईलाई लेगेसी क्यामेरा मोडमा सेट गर्न सक्नुहुन्छ ताकि PiCamera काम गर्न सकियोस्। क्यामेरा सकेट पनि डिफल्ट रूपमा अक्षम गरिएको छ, तर लेगेसी क्यामेरा सफ्टवेयर सक्षम गर्दा सकेट स्वतः सक्रिय हुन्छ।

  1. पाईलाई पावर अप गर्नुहोस् र बुट हुन पर्खनुहोस्।

  2. VS Code सुरु गर्नुहोस्, चाहे पाईमा सिधै वा Remote SSH एक्सटेन्सनमार्फत जडान गरेर।

  3. आफ्नो टर्मिनलबाट निम्न कमाण्डहरू चलाउनुहोस्:

    sudo raspi-config nonint do_legacy 0
    sudo reboot
    

    यसले लेगेसी क्यामेरा सफ्टवेयर सक्षम गर्न सेटिङ टगल गर्नेछ, त्यसपछि सेटिङ लागू गर्न पाईलाई पुन: सुरु गर्नेछ।

  4. पाई पुन: सुरु भएपछि, VS Code पुन: सुरु गर्नुहोस्।

कार्य - क्यामेरा प्रोग्राम गर्नुहोस्

डिभाइस प्रोग्राम गर्नुहोस्।

  1. टर्मिनलबाट pi प्रयोगकर्ताको होम डाइरेक्टरीमा fruit-quality-detector नामक नयाँ फोल्डर बनाउनुहोस्। यस फोल्डरमा app.py नामक फाइल बनाउनुहोस्।

  2. यो फोल्डरलाई VS Code मा खोल्नुहोस्।

  3. क्यामेरासँग अन्तरक्रिया गर्न, तपाईं PiCamera पायथन लाइब्रेरी प्रयोग गर्न सक्नुहुन्छ। यसका लागि Pip प्याकेज निम्न कमाण्ड प्रयोग गरेर इन्स्टल गर्नुहोस्:

    pip3 install picamera
    
  4. आफ्नो app.py फाइलमा निम्न कोड थप्नुहोस्:

    import io
    import time
    from picamera import PiCamera
    

    यो कोडले आवश्यक लाइब्रेरीहरू आयात गर्दछ, जसमा PiCamera लाइब्रेरी पनि समावेश छ।

  5. क्यामेरा इनिसियलाइज गर्न तलको कोड थप्नुहोस्:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    
    time.sleep(2)
    

    यो कोडले PiCamera वस्तु बनाउँछ र रिजोल्युसनलाई 640x480 मा सेट गर्दछ। यद्यपि उच्च रिजोल्युसनहरू समर्थित छन् (3280x2464 सम्म), छवि वर्गीकरण सानो छविहरू (227x227) मा काम गर्दछ, त्यसैले ठूलो छविहरू कैप्चर र पठाउन आवश्यक छैन।

    camera.rotation = 0 लाइनले छविको रोटेशन सेट गर्दछ। रिबन केबल क्यामेराको तलतर्फ आउँछ, तर यदि तपाईंको क्यामेरा वस्तु वर्गीकरण गर्न सजिलो बनाउन घुमाइएको छ भने, तपाईं यस लाइनलाई रोटेशनको डिग्री अनुसार परिवर्तन गर्न सक्नुहुन्छ।

    क्यामेरा पेयको क्यानमाथि झुण्डिएको

    उदाहरणका लागि, यदि तपाईं रिबन केबललाई माथिबाट झुण्ड्याउनुहुन्छ ताकि यो क्यामेराको माथि होस्, भने रोटेशनलाई 180 मा सेट गर्नुहोस्:

    camera.rotation = 180
    

    क्यामेरा सुरु हुन केही सेकेन्ड लाग्छ, त्यसैले time.sleep(2) प्रयोग गरिएको छ।

  6. छविलाई बाइनरी डाटाको रूपमा कैप्चर गर्न तलको कोड थप्नुहोस्:

    image = io.BytesIO()
    camera.capture(image, 'jpeg')
    image.seek(0)
    

    यो कोडले बाइनरी डाटा भण्डारण गर्न BytesIO वस्तु बनाउँछ। छवि क्यामेराबाट JPEG फाइलको रूपमा पढिन्छ र यस वस्तुमा भण्डारण गरिन्छ। यस वस्तुमा डाटाको अन्त्यमा थप डाटा लेख्न सकिने स्थिति सूचक हुन्छ, त्यसैले image.seek(0) लाइनले स्थिति सूचकलाई सुरुमा सार्छ ताकि सबै डाटा पछि पढ्न सकियोस्।

  7. तलको कोड थपेर छविलाई फाइलमा सुरक्षित गर्नुहोस्:

    with open('image.jpg', 'wb') as image_file:
        image_file.write(image.read())
    

    यो कोडले image.jpg नामक फाइल लेख्न खोल्छ, त्यसपछि BytesIO वस्तुबाट सबै डाटा पढेर फाइलमा लेख्छ।

    💁 तपाईं छविलाई BytesIO वस्तुको सट्टा सिधै फाइलमा कैप्चर गर्न सक्नुहुन्छ। BytesIO वस्तु प्रयोग गर्ने कारण यो पाठको पछि छविलाई छवि वर्गीकरणकर्तामा पठाउन हो।

  8. क्यामेरालाई कुनै वस्तुतर्फ सोझ्याउनुहोस् र यो कोड चलाउनुहोस्।

  9. एक छवि कैप्चर हुनेछ र image.jpg नामक फाइलको रूपमा हालको फोल्डरमा सुरक्षित हुनेछ। तपाईं यो फाइललाई VS Code एक्सप्लोररमा देख्नुहुनेछ। फाइल चयन गरेर छवि हेर्नुहोस्। यदि यसलाई रोटेशन आवश्यक छ भने, camera.rotation = 0 लाइनलाई आवश्यक अनुसार अपडेट गर्नुहोस् र अर्को तस्वीर लिनुहोस्।

💁 तपाईं यो कोडलाई code-camera/pi फोल्डरमा फेला पार्न सक्नुहुन्छ।

😀 तपाईंको क्यामेरा प्रोग्राम सफल भयो!


अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।