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

12 KiB

تصویر حاصل کریں - راسپبیری پائی

اس سبق کے اس حصے میں، آپ اپنے راسپبیری پائی میں کیمرہ سینسر شامل کریں گے اور اس سے تصاویر پڑھیں گے۔

ہارڈویئر

راسپبیری پائی کو ایک کیمرہ کی ضرورت ہے۔

آپ جو کیمرہ استعمال کریں گے وہ راسپبیری پائی کیمرہ ماڈیول ہے۔ یہ کیمرہ خاص طور پر راسپبیری پائی کے ساتھ کام کرنے کے لیے بنایا گیا ہے اور پائی پر ایک مخصوص کنیکٹر کے ذریعے جڑتا ہے۔

💁 یہ کیمرہ کیمرہ سیریل انٹرفیس، جو موبائل انڈسٹری پروسیسر انٹرفیس الائنس کا ایک پروٹوکول ہے استعمال کرتا ہے۔ یہ تصاویر بھیجنے کے لیے ایک مخصوص پروٹوکول ہے۔

کیمرہ کو جوڑیں

کیمرہ کو راسپبیری پائی کے ساتھ ربن کیبل کے ذریعے جوڑا جا سکتا ہے۔

کام - کیمرہ کو جوڑیں

راسپبیری پائی کیمرہ

  1. پائی کو بند کریں۔

  2. کیمرہ کے ساتھ آنے والی ربن کیبل کو کیمرہ سے جوڑیں۔ ایسا کرنے کے لیے، ہولڈر میں موجود سیاہ پلاسٹک کلپ کو آہستہ سے کھینچیں تاکہ وہ تھوڑا سا باہر آجائے، پھر کیبل کو ساکٹ میں ڈالیں، نیلے حصے کو لینس سے دور اور دھاتی پن کی پٹیاں لینس کی طرف رکھیں۔ جب کیبل مکمل طور پر اندر ہو جائے، تو سیاہ پلاسٹک کلپ کو واپس جگہ پر دھکیل دیں۔

    آپ راسپبیری پائی کیمرہ ماڈیول کے ساتھ شروعات کی دستاویزات میں کلپ کو کھولنے اور کیبل ڈالنے کا اینیمیشن دیکھ سکتے ہیں۔

    ربن کیبل کیمرہ ماڈیول میں داخل کی گئی

  3. پائی سے گروو بیس ہیٹ کو ہٹا دیں۔

  4. ربن کیبل کو گروو بیس ہیٹ کے کیمرہ سلاٹ سے گزاریں۔ اس بات کو یقینی بنائیں کہ کیبل کا نیلا حصہ اینالاگ پورٹس A0, A1 وغیرہ کی طرف ہو۔

    ربن کیبل گروو بیس ہیٹ سے گزرتی ہوئی

  5. ربن کیبل کو پائی کے کیمرہ پورٹ میں ڈالیں۔ ایک بار پھر، سیاہ پلاسٹک کلپ کو اوپر کھینچیں، کیبل ڈالیں، پھر کلپ کو واپس دھکیل دیں۔ کیبل کا نیلا حصہ USB اور ایتھرنیٹ پورٹس کی طرف ہونا چاہیے۔

    ربن کیبل پائی کے کیمرہ ساکٹ سے جڑی ہوئی

  6. گروو بیس ہیٹ کو دوبارہ لگائیں۔

کیمرہ کو پروگرام کریں

اب راسپبیری پائی کو 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 آبجیکٹ کے، فائل کا نام camera.capture کال میں پاس کر کے۔ BytesIO آبجیکٹ استعمال کرنے کی وجہ یہ ہے کہ بعد میں اس سبق میں آپ تصویر کو اپنے امیج کلاسیفائر کو بھیج سکیں۔

  8. کیمرہ کو کسی چیز کی طرف اشارہ کریں اور اس کوڈ کو چلائیں۔

  9. ایک تصویر حاصل کی جائے گی اور موجودہ فولڈر میں image.jpg کے طور پر محفوظ کی جائے گی۔ آپ اس فائل کو VS Code ایکسپلورر میں دیکھیں گے۔ فائل کو منتخب کریں تاکہ تصویر کو دیکھ سکیں۔ اگر اسے روٹیشن کی ضرورت ہو، تو camera.rotation = 0 لائن کو ضروری کے مطابق اپ ڈیٹ کریں اور دوبارہ تصویر لیں۔

💁 آپ اس کوڈ کو code-camera/pi فولڈر میں تلاش کر سکتے ہیں۔

😀 آپ کا کیمرہ پروگرام کامیاب رہا!


ڈسکلیمر:
یہ دستاویز AI ترجمہ سروس Co-op Translator کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔