# একটি ছবি ধারণ করুন - ভার্চুয়াল IoT হার্ডওয়্যার এই পাঠের এই অংশে, আপনি আপনার ভার্চুয়াল IoT ডিভাইসে একটি ক্যামেরা সেন্সর যোগ করবেন এবং এর থেকে ছবি পড়বেন। ## হার্ডওয়্যার ভার্চুয়াল IoT ডিভাইস একটি সিমুলেটেড ক্যামেরা ব্যবহার করবে যা হয় ফাইল থেকে ছবি পাঠায়, অথবা আপনার ওয়েবক্যাম থেকে। ### CounterFit-এ ক্যামেরা যোগ করুন ভার্চুয়াল ক্যামেরা ব্যবহার করতে, আপনাকে CounterFit অ্যাপে একটি ক্যামেরা যোগ করতে হবে। #### কাজ - CounterFit-এ ক্যামেরা যোগ করুন CounterFit অ্যাপে ক্যামেরা যোগ করুন। 1. আপনার কম্পিউটারে `fruit-quality-detector` নামে একটি ফোল্ডারে একটি নতুন পাইথন অ্যাপ তৈরি করুন, যেখানে একটি `app.py` ফাইল এবং একটি পাইথন ভার্চুয়াল এনভায়রনমেন্ট থাকবে। CounterFit pip প্যাকেজগুলো যোগ করুন। > ⚠️ প্রয়োজনে [পাঠ ১-এ CounterFit পাইথন প্রকল্প তৈরি এবং সেটআপ করার নির্দেশনা](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md) দেখতে পারেন। 1. একটি অতিরিক্ত Pip প্যাকেজ ইনস্টল করুন যা একটি CounterFit শিম ইনস্টল করবে, যা Camera সেন্সরগুলোর সাথে কথা বলতে পারে এবং কিছু [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.bn.png) ক্যামেরাটি তৈরি হবে এবং সেন্সর তালিকায় প্রদর্শিত হবে। ![তৈরি করা ক্যামেরা](../../../../../translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.bn.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 ``` এই কোডটি কিছু প্রয়োজনীয় লাইব্রেরি আমদানি করে, যার মধ্যে `PiCamera` ক্লাস রয়েছে যা counterfit_shims_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` অবজেক্ট ব্যবহার করা হয়েছে। 1. CounterFit-এ ক্যামেরার জন্য যে ছবি ধারণ করা হবে তা কনফিগার করুন। আপনি *Source*-কে *File*-এ সেট করতে পারেন এবং একটি ছবি আপলোড করতে পারেন, অথবা *Source*-কে *WebCam*-এ সেট করতে পারেন এবং আপনার ওয়েবক্যাম থেকে ছবি ধারণ করা হবে। একটি ছবি নির্বাচন করার বা আপনার ওয়েবক্যাম নির্বাচন করার পরে **Set** বোতামটি নিশ্চিত করুন। ![CounterFit-এ ফাইল এবং ওয়েবক্যাম সেটিংস](../../../../../translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.bn.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) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।