|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "c677667095f6133eee418c7e53615d05",
|
|
|
"translation_date": "2025-08-26T21:49:03+00:00",
|
|
|
"source_file": "4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md",
|
|
|
"language_code": "ur"
|
|
|
}
|
|
|
-->
|
|
|
# تصویر حاصل کریں - راسپبیری پائی
|
|
|
|
|
|
اس سبق کے اس حصے میں، آپ اپنے راسپبیری پائی میں کیمرہ سینسر شامل کریں گے اور اس سے تصاویر پڑھیں گے۔
|
|
|
|
|
|
## ہارڈویئر
|
|
|
|
|
|
راسپبیری پائی کو ایک کیمرہ کی ضرورت ہے۔
|
|
|
|
|
|
آپ جو کیمرہ استعمال کریں گے وہ [راسپبیری پائی کیمرہ ماڈیول](https://www.raspberrypi.org/products/camera-module-v2/) ہے۔ یہ کیمرہ خاص طور پر راسپبیری پائی کے ساتھ کام کرنے کے لیے بنایا گیا ہے اور پائی پر ایک مخصوص کنیکٹر کے ذریعے جڑتا ہے۔
|
|
|
|
|
|
> 💁 یہ کیمرہ [کیمرہ سیریل انٹرفیس، جو موبائل انڈسٹری پروسیسر انٹرفیس الائنس کا ایک پروٹوکول ہے](https://wikipedia.org/wiki/Camera_Serial_Interface) استعمال کرتا ہے۔ یہ تصاویر بھیجنے کے لیے ایک مخصوص پروٹوکول ہے۔
|
|
|
|
|
|
## کیمرہ کو جوڑیں
|
|
|
|
|
|
کیمرہ کو راسپبیری پائی کے ساتھ ربن کیبل کے ذریعے جوڑا جا سکتا ہے۔
|
|
|
|
|
|
### کام - کیمرہ کو جوڑیں
|
|
|
|
|
|

|
|
|
|
|
|
1. پائی کو بند کریں۔
|
|
|
|
|
|
1. کیمرہ کے ساتھ آنے والی ربن کیبل کو کیمرہ سے جوڑیں۔ ایسا کرنے کے لیے، ہولڈر میں موجود سیاہ پلاسٹک کلپ کو آہستہ سے کھینچیں تاکہ وہ تھوڑا سا باہر آجائے، پھر کیبل کو ساکٹ میں ڈالیں، نیلے حصے کو لینس سے دور اور دھاتی پن کی پٹیاں لینس کی طرف رکھیں۔ جب کیبل مکمل طور پر اندر ہو جائے، تو سیاہ پلاسٹک کلپ کو واپس جگہ پر دھکیل دیں۔
|
|
|
|
|
|
آپ [راسپبیری پائی کیمرہ ماڈیول کے ساتھ شروعات کی دستاویزات](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2) میں کلپ کو کھولنے اور کیبل ڈالنے کا اینیمیشن دیکھ سکتے ہیں۔
|
|
|
|
|
|

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

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

|
|
|
|
|
|
1. گروو بیس ہیٹ کو دوبارہ لگائیں۔
|
|
|
|
|
|
## کیمرہ کو پروگرام کریں
|
|
|
|
|
|
اب راسپبیری پائی کو [PiCamera](https://pypi.org/project/picamera/) پائتھون لائبریری کا استعمال کرتے ہوئے کیمرہ چلانے کے لیے پروگرام کیا جا سکتا ہے۔
|
|
|
|
|
|
### کام - لیگیسی کیمرہ موڈ کو فعال کریں
|
|
|
|
|
|
بدقسمتی سے، راسپبیری پائی OS Bullseye کے اجرا کے ساتھ، OS کے ساتھ آنے والا کیمرہ سافٹ ویئر تبدیل ہو گیا، جس کا مطلب ہے کہ PiCamera اب ڈیفالٹ طور پر کام نہیں کرتا۔ ایک متبادل پر کام ہو رہا ہے، جسے PiCamera2 کہا جاتا ہے، لیکن یہ ابھی استعمال کے لیے تیار نہیں ہے۔
|
|
|
|
|
|
فی الحال، آپ اپنے پائی کو لیگیسی کیمرہ موڈ میں سیٹ کر سکتے ہیں تاکہ PiCamera کام کرے۔ کیمرہ ساکٹ بھی ڈیفالٹ طور پر غیر فعال ہے، لیکن لیگیسی کیمرہ سافٹ ویئر کو آن کرنے سے ساکٹ خود بخود فعال ہو جاتا ہے۔
|
|
|
|
|
|
1. پائی کو پاور دیں اور بوٹ ہونے کا انتظار کریں۔
|
|
|
|
|
|
1. VS Code لانچ کریں، یا تو براہ راست پائی پر، یا Remote SSH ایکسٹینشن کے ذریعے کنیکٹ کریں۔
|
|
|
|
|
|
1. اپنے ٹرمینل سے درج ذیل کمانڈز چلائیں:
|
|
|
|
|
|
```sh
|
|
|
sudo raspi-config nonint do_legacy 0
|
|
|
sudo reboot
|
|
|
```
|
|
|
|
|
|
یہ ایک سیٹنگ کو ٹوگل کرے گا تاکہ لیگیسی کیمرہ سافٹ ویئر کو فعال کیا جا سکے، پھر اس سیٹنگ کو اثر انداز کرنے کے لیے پائی کو ریبوٹ کرے گا۔
|
|
|
|
|
|
1. پائی کے ریبوٹ ہونے کا انتظار کریں، پھر دوبارہ VS Code لانچ کریں۔
|
|
|
|
|
|
### کام - کیمرہ کو پروگرام کریں
|
|
|
|
|
|
ڈیوائس کو پروگرام کریں۔
|
|
|
|
|
|
1. ٹرمینل سے، `pi` یوزر کے ہوم ڈائریکٹری میں ایک نیا فولڈر بنائیں جس کا نام `fruit-quality-detector` ہو۔ اس فولڈر میں ایک فائل بنائیں جس کا نام `app.py` ہو۔
|
|
|
|
|
|
1. اس فولڈر کو VS Code میں کھولیں۔
|
|
|
|
|
|
1. کیمرہ کے ساتھ تعامل کرنے کے لیے، آپ PiCamera پائتھون لائبریری استعمال کر سکتے ہیں۔ اس کے لیے Pip پیکیج درج ذیل کمانڈ کے ساتھ انسٹال کریں:
|
|
|
|
|
|
```sh
|
|
|
pip3 install picamera
|
|
|
```
|
|
|
|
|
|
1. اپنے `app.py` فائل میں درج ذیل کوڈ شامل کریں:
|
|
|
|
|
|
```python
|
|
|
import io
|
|
|
import time
|
|
|
from picamera import PiCamera
|
|
|
```
|
|
|
|
|
|
یہ کوڈ ضروری لائبریریوں کو امپورٹ کرتا ہے، بشمول `PiCamera` لائبریری۔
|
|
|
|
|
|
1. اس کے نیچے درج ذیل کوڈ شامل کریں تاکہ کیمرہ کو انیشیلائز کیا جا سکے:
|
|
|
|
|
|
```python
|
|
|
camera = PiCamera()
|
|
|
camera.resolution = (640, 480)
|
|
|
camera.rotation = 0
|
|
|
|
|
|
time.sleep(2)
|
|
|
```
|
|
|
|
|
|
یہ کوڈ ایک PiCamera آبجیکٹ بناتا ہے، ریزولوشن کو 640x480 پر سیٹ کرتا ہے۔ اگرچہ زیادہ ریزولوشنز سپورٹ کی جاتی ہیں (3280x2464 تک)، لیکن امیج کلاسیفائر بہت چھوٹی تصاویر (227x227) پر کام کرتا ہے، اس لیے بڑی تصاویر حاصل کرنے اور بھیجنے کی ضرورت نہیں ہے۔
|
|
|
|
|
|
`camera.rotation = 0` لائن تصویر کی روٹیشن سیٹ کرتی ہے۔ ربن کیبل کیمرہ کے نیچے آتی ہے، لیکن اگر آپ نے کیمرہ کو گھمایا تاکہ وہ آسانی سے اس چیز کی طرف اشارہ کرے جسے آپ کلاسیفائی کرنا چاہتے ہیں، تو آپ اس لائن کو روٹیشن کے ڈگریز کے مطابق تبدیل کر سکتے ہیں۔
|
|
|
|
|
|

|
|
|
|
|
|
مثال کے طور پر، اگر آپ ربن کیبل کو کسی چیز کے اوپر معلق کریں تاکہ وہ کیمرہ کے اوپر ہو، تو روٹیشن کو 180 پر سیٹ کریں:
|
|
|
|
|
|
```python
|
|
|
camera.rotation = 180
|
|
|
```
|
|
|
|
|
|
کیمرہ کو شروع ہونے میں چند سیکنڈ لگتے ہیں، اسی لیے `time.sleep(2)`۔
|
|
|
|
|
|
1. اس کے نیچے درج ذیل کوڈ شامل کریں تاکہ تصویر کو بائنری ڈیٹا کے طور پر حاصل کیا جا سکے:
|
|
|
|
|
|
```python
|
|
|
image = io.BytesIO()
|
|
|
camera.capture(image, 'jpeg')
|
|
|
image.seek(0)
|
|
|
```
|
|
|
|
|
|
یہ کوڈ ایک `BytesIO` آبجیکٹ بناتا ہے تاکہ بائنری ڈیٹا کو اسٹور کیا جا سکے۔ تصویر کیمرہ سے ایک JPEG فائل کے طور پر پڑھی جاتی ہے اور اس آبجیکٹ میں اسٹور کی جاتی ہے۔ اس آبجیکٹ میں ایک پوزیشن انڈیکیٹر ہوتا ہے تاکہ معلوم ہو سکے کہ ڈیٹا میں کہاں ہے تاکہ مزید ڈیٹا کو آخر میں لکھا جا سکے، اس لیے `image.seek(0)` لائن اس پوزیشن کو شروع میں واپس لے جاتی ہے تاکہ بعد میں تمام ڈیٹا کو پڑھا جا سکے۔
|
|
|
|
|
|
1. اس کے نیچے درج ذیل شامل کریں تاکہ تصویر کو فائل میں محفوظ کیا جا سکے:
|
|
|
|
|
|
```python
|
|
|
with open('image.jpg', 'wb') as image_file:
|
|
|
image_file.write(image.read())
|
|
|
```
|
|
|
|
|
|
یہ کوڈ ایک فائل کو لکھنے کے لیے کھولتا ہے جس کا نام `image.jpg` ہے، پھر `BytesIO` آبجیکٹ سے تمام ڈیٹا کو پڑھتا ہے اور اسے فائل میں لکھتا ہے۔
|
|
|
|
|
|
> 💁 آپ تصویر کو براہ راست فائل میں حاصل کر سکتے ہیں بجائے `BytesIO` آبجیکٹ کے، فائل کا نام `camera.capture` کال میں پاس کر کے۔ `BytesIO` آبجیکٹ استعمال کرنے کی وجہ یہ ہے کہ بعد میں اس سبق میں آپ تصویر کو اپنے امیج کلاسیفائر کو بھیج سکیں۔
|
|
|
|
|
|
1. کیمرہ کو کسی چیز کی طرف اشارہ کریں اور اس کوڈ کو چلائیں۔
|
|
|
|
|
|
1. ایک تصویر حاصل کی جائے گی اور موجودہ فولڈر میں `image.jpg` کے طور پر محفوظ کی جائے گی۔ آپ اس فائل کو VS Code ایکسپلورر میں دیکھیں گے۔ فائل کو منتخب کریں تاکہ تصویر کو دیکھ سکیں۔ اگر اسے روٹیشن کی ضرورت ہو، تو `camera.rotation = 0` لائن کو ضروری کے مطابق اپ ڈیٹ کریں اور دوبارہ تصویر لیں۔
|
|
|
|
|
|
> 💁 آپ اس کوڈ کو [code-camera/pi](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-camera/pi) فولڈر میں تلاش کر سکتے ہیں۔
|
|
|
|
|
|
😀 آپ کا کیمرہ پروگرام کامیاب رہا!
|
|
|
|
|
|
---
|
|
|
|
|
|
**ڈسکلیمر**:
|
|
|
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ |