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/virtual-device-camera.md

126 lines
12 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3ba7150ffc4a6999f6c3cfb4906ec7df",
"translation_date": "2025-08-27T10:26:07+00:00",
"source_file": "4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md",
"language_code": "ne"
}
-->
# छवि कैप्चर गर्नुहोस् - भर्चुअल IoT हार्डवेयर
यस पाठको यस भागमा, तपाईं आफ्नो भर्चुअल IoT उपकरणमा क्यामेरा सेन्सर थप्नुहुनेछ र यसबाट छविहरू पढ्नुहुनेछ।
## हार्डवेयर
भर्चुअल IoT उपकरणले सिमुलेट गरिएको क्यामेरा प्रयोग गर्नेछ जसले या त फाइलहरूबाट छविहरू पठाउँछ वा तपाईंको वेबक्यामबाट।
### CounterFit मा क्यामेरा थप्नुहोस्
भर्चुअल क्यामेरा प्रयोग गर्न, तपाईंले CounterFit एपमा एउटा थप्न आवश्यक छ।
#### कार्य - CounterFit मा क्यामेरा थप्नुहोस्
CounterFit एपमा क्यामेरा थप्नुहोस्।
1. आफ्नो कम्प्युटरमा `fruit-quality-detector` नामक फोल्डरमा नयाँ Python एप सिर्जना गर्नुहोस् जसमा `app.py` नामक एकल फाइल र Python भर्चुअल वातावरण होस्, र CounterFit pip प्याकेजहरू थप्नुहोस्।
> ⚠️ आवश्यक परेमा [पाठ १ मा CounterFit Python प्रोजेक्ट सिर्जना र सेटअप गर्ने निर्देशनहरू](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md) हेर्न सक्नुहुन्छ।
1. क्यामेरा सेन्सरहरूसँग कुरा गर्न सक्ने CounterFit शिम स्थापना गर्न थप Pip प्याकेज स्थापना गर्नुहोस्, जसले केही [Picamera Pip प्याकेज](https://pypi.org/project/picamera/) सिमुलेट गर्दछ। सुनिश्चित गर्नुहोस् कि तपाईंले यो भर्चुअल वातावरण सक्रिय भएको टर्मिनलबाट स्थापना गर्दै हुनुहुन्छ।
```sh
pip install counterfit-shims-picamera
```
1. सुनिश्चित गर्नुहोस् कि CounterFit वेब एप चलिरहेको छ।
1. क्यामेरा सिर्जना गर्नुहोस्:
1. *Sensors* प्यानको *Create sensor* बक्समा, *Sensor type* ड्रपडाउन गर्नुहोस् र *Camera* चयन गर्नुहोस्।
1. *Name* लाई `Picamera` सेट गर्नुहोस्।
1. क्यामेरा सिर्जना गर्न **Add** बटन चयन गर्नुहोस्।
![क्यामेरा सेटिङहरू](../../../../../translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.ne.png)
क्यामेरा सिर्जना हुनेछ र सेन्सरहरूको सूचीमा देखा पर्नेछ।
![क्यामेरा सिर्जना गरियो](../../../../../translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.ne.png)
## क्यामेरा प्रोग्राम गर्नुहोस्
भर्चुअल IoT उपकरण अब भर्चुअल क्यामेरा प्रयोग गर्न प्रोग्राम गर्न सकिन्छ।
### कार्य - क्यामेरा प्रोग्राम गर्नुहोस्
उपकरण प्रोग्राम गर्नुहोस्।
1. सुनिश्चित गर्नुहोस् कि `fruit-quality-detector` एप VS Code मा खुला छ।
1. `app.py` फाइल खोल्नुहोस्।
1. CounterFit सँग एपलाई जडान गर्न `app.py` को माथिल्लो भागमा निम्न कोड थप्नुहोस्:
```python
from counterfit_connection import CounterFitConnection
CounterFitConnection.init('127.0.0.1', 5000)
```
1. आफ्नो `app.py` फाइलमा निम्न कोड थप्नुहोस्:
```python
import io
from counterfit_shims_picamera import PiCamera
```
यो कोडले आवश्यक पुस्तकालयहरू आयात गर्दछ, जसमा counterfit_shims_picamera पुस्तकालयबाट `PiCamera` कक्षा समावेश छ।
1. क्यामेरा आरम्भ गर्न निम्न कोड यसको तल थप्नुहोस्:
```python
camera = PiCamera()
camera.resolution = (640, 480)
camera.rotation = 0
```
यो कोडले PiCamera वस्तु सिर्जना गर्दछ, रेजोल्युसनलाई 640x480 मा सेट गर्दछ। यद्यपि उच्च रेजोल्युसनहरू समर्थित छन्, छवि वर्गीकरणकर्ता धेरै साना छविहरू (227x227) मा काम गर्दछ, त्यसैले ठूलो छविहरू कैप्चर र पठाउन आवश्यक छैन।
`camera.rotation = 0` लाइनले छविको घुमाइलाई डिग्रीमा सेट गर्दछ। यदि तपाईं वेबक्याम वा फाइलबाट छवि घुमाउन आवश्यक छ भने, यसलाई उपयुक्त रूपमा सेट गर्नुहोस्। उदाहरणका लागि, यदि तपाईं वेबक्याममा ल्यान्डस्केप मोडमा रहेको केरा छविलाई पोर्ट्रेटमा परिवर्तन गर्न चाहनुहुन्छ भने, `camera.rotation = 90` सेट गर्नुहोस्।
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` वस्तुबाट सबै डाटा पढ्छ र फाइलमा लेख्छ।
> 💁 तपाईं `camera.capture` कलमा फाइल नाम पास गरेर छविलाई `BytesIO` वस्तुको सट्टा सिधै फाइलमा कैप्चर गर्न सक्नुहुन्छ। `BytesIO` वस्तु प्रयोग गर्ने कारण यो पाठको पछि तपाईंले छविलाई आफ्नो छवि वर्गीकरणकर्तामा पठाउन सक्नुहुन्छ।
1. CounterFit मा क्यामेराले कैप्चर गर्ने छविलाई कन्फिगर गर्नुहोस्। तपाईं *Source* लाई *File* मा सेट गर्न सक्नुहुन्छ, त्यसपछि छवि फाइल अपलोड गर्नुहोस्, वा *Source* लाई *WebCam* मा सेट गर्न सक्नुहुन्छ, र छविहरू तपाईंको वेबक्यामबाट कैप्चर गरिनेछ। सुनिश्चित गर्नुहोस् कि तस्वीर चयन गरेपछि वा वेबक्याम चयन गरेपछि **Set** बटन चयन गर्नुहोस्।
![CounterFit मा फाइललाई छवि स्रोतको रूपमा सेट गरिएको, र वेबक्याममा केरा समातेको व्यक्तिको पूर्वावलोकन देखाइएको](../../../../../translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.ne.png)
1. एउटा छवि कैप्चर गरिनेछ र `image.jpg` नामक फाइलको रूपमा हालको फोल्डरमा बचत गरिनेछ। तपाईं यो फाइललाई VS Code एक्सप्लोररमा देख्नुहुनेछ। फाइल चयन गरेर छवि हेर्नुहोस्। यदि यसलाई घुमाउन आवश्यक छ भने, `camera.rotation = 0` लाइनलाई आवश्यक अनुसार अपडेट गर्नुहोस् र अर्को तस्वीर लिनुहोस्।
> 💁 तपाईं यो कोड [code-camera/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-camera/virtual-iot-device) फोल्डरमा पाउन सक्नुहुन्छ।
😀 तपाईंको क्यामेरा प्रोग्राम सफल भयो!
---
**अस्वीकरण**:
यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।