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/mr/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md

15 KiB

रास्पबेरी पायसह प्रतिमा कॅप्चर करा

या धड्याच्या या भागात, तुम्ही तुमच्या रास्पबेरी पायला कॅमेरा सेन्सर जोडाल आणि त्यातून प्रतिमा वाचाल.

हार्डवेअर

रास्पबेरी पायसाठी कॅमेरा आवश्यक आहे.

तुम्ही वापरणारा कॅमेरा Raspberry Pi Camera Module आहे. हा कॅमेरा रास्पबेरी पायसाठी डिझाइन केलेला आहे आणि पायवरील समर्पित कनेक्टरद्वारे जोडला जातो.

💁 हा कॅमेरा Camera Serial Interface, Mobile Industry Processor Interface Alliance कडून विकसित केलेला प्रोटोकॉल वापरतो, ज्याला MIPI-CSI म्हणतात. हा प्रतिमा पाठवण्यासाठी समर्पित प्रोटोकॉल आहे.

कॅमेरा कनेक्ट करा

कॅमेरा रास्पबेरी पायला रिबन केबलद्वारे जोडला जाऊ शकतो.

कार्य - कॅमेरा कनेक्ट करा

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

  1. पाय बंद करा.

  2. कॅमेरासोबत आलेली रिबन केबल कॅमेराला जोडा. हे करण्यासाठी, होल्डरमधील काळ्या प्लास्टिकच्या क्लिपला हलकेच ओढा जेणेकरून ती थोडी बाहेर येईल, नंतर केबल सॉकेटमध्ये सरकवा, निळी बाजू लेन्सपासून दूर आणि मेटल पिन पट्ट्या लेन्सकडे तोंड करून ठेवा. पूर्णपणे आत गेल्यावर, काळ्या प्लास्टिकच्या क्लिपला परत जागेवर ढकलून द्या.

    Raspberry Pi Getting Started with the Camera module documentation मध्ये क्लिप कशी उघडायची आणि केबल कशी घालायची याचे अॅनिमेशन पाहू शकता.

    रिबन केबल कॅमेरा मॉड्यूलमध्ये घातलेली

  3. पायवरील Grove Base Hat काढा.

  4. रिबन केबलला Grove Base Hat मधील कॅमेरा स्लॉटमधून पास करा. केबलची निळी बाजू A0, A1 इत्यादी लेबल असलेल्या अॅनालॉग पोर्ट्सकडे तोंड करून ठेवा.

    Grove Base Hat मधून जाणारी रिबन केबल

  5. रिबन केबलला पायवरील कॅमेरा पोर्टमध्ये घाला. पुन्हा, काळ्या प्लास्टिकच्या क्लिपला वर ओढा, केबल घाला, नंतर क्लिप परत ढकलून द्या. केबलची निळी बाजू USB आणि ईथरनेट पोर्ट्सकडे तोंड करून ठेवा.

    रिबन केबल पायवरील कॅमेरा सॉकेटला जोडलेली

  6. Grove Base Hat परत लावा.

कॅमेरा प्रोग्राम करा

आता रास्पबेरी पायला PiCamera Python लायब्ररी वापरून कॅमेरा वापरण्यासाठी प्रोग्राम करता येईल.

कार्य - लेगसी कॅमेरा मोड सक्षम करा

दुर्दैवाने, Raspberry Pi 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 Python लायब्ररी वापरू शकता. खालील कमांडसह 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 ऑब्जेक्टऐवजी camera.capture कॉलला फाईलचे नाव देऊन. BytesIO ऑब्जेक्ट वापरण्याचे कारण म्हणजे या धड्याच्या पुढील भागात तुम्ही प्रतिमा तुमच्या प्रतिमा वर्गीकरणासाठी पाठवू शकता.

  8. कॅमेराला एखाद्या वस्तूकडे निर्देशित करा आणि हा कोड चालवा.

  9. प्रतिमा कॅप्चर होईल आणि image.jpg नावाने वर्तमान फोल्डरमध्ये सेव्ह होईल. तुम्हाला ही फाईल VS Code एक्सप्लोररमध्ये दिसेल. फाईल निवडा आणि प्रतिमा पहा. जर रोटेशन आवश्यक असेल, तर camera.rotation = 0 ओळ अपडेट करा आणि पुन्हा प्रतिमा घ्या.

💁 तुम्हाला हा कोड code-camera/pi फोल्डरमध्ये सापडेल.

😀 तुमचा कॅमेरा प्रोग्राम यशस्वी झाला!


अस्वीकरण:
हा दस्तऐवज AI भाषांतर सेवा Co-op Translator चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.