# ഒരു ചിത്രം പിടിക്കുക - വെർച്വൽ IoT ഹാർഡ്‌വെയർ പാഠത്തിന്റെ ഈ ഭാഗത്ത്, നിങ്ങൾ നിങ്ങളുടെ വെർച്വൽ IoT ഉപകരണത്തിൽ ഒരു ക്യാമറ സെൻസർ ചേർക്കുകയും അതിൽ നിന്ന് ചിത്രങ്ങൾ വായിക്കുകയും ചെയ്യും. ## ഹാർഡ്‌വെയർ വെർച്വൽ IoT ഉപകരണം ഫയലുകളിൽ നിന്ന് ചിത്രങ്ങൾ അയയ്ക്കുന്നോ, അല്ലെങ്കിൽ നിങ്ങളുടെ വെബ്‌ക്യാമിൽ നിന്നോ ചിത്രങ്ങൾ അയക്കുന്ന സിമുലേറ്റഡ് ക്യാമറ ഉപയോഗിക്കും. ### CounterFit-ലേക്ക് ക്യാമറ ചേർക്കുക വെർച്വൽ ക്യാമറ ഉപയോഗിക്കാൻ, CounterFit ആപ്പിൽ ഒരു ക്യാമറ ചേർക്കേണ്ടതാണ് #### ടാസ്‌ക് - CounterFit-ലേക്ക് ക്യാമറ ചേർക്കുക CounterFit ആപ്പിലേക്ക് ക്യാമറ ചേർക്കുക. 1. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ `fruit-quality-detector` എന്ന ഫോൾഡറിൽ ഒരു പുതിയ Python ആപ്പ് സൃഷ്ടിക്കുക, അതിൽ `app.py` എന്ന ഒറ്റ ഫയലും Python വെർച്വൽ എൻവയോൺമെന്റും ഉണ്ടാക്കി, CounterFit പിപ്പ് പാക്കേജുകൾ ചേർക്കുക. > ⚠️ ആവശ്യമായ പക്ഷം [പാഠം 1 ലെ CounterFit Python പ്രോജക്ട് സൃഷ്ടിക്കൽ, സജ്ജമാക്കൽ നിർദ്ദേശങ്ങൾ കാണുക](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md). 1. കൂടുതൽ ഒരു പിപ്പ് പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുക, ഇത് ചില [Picamera Pip പാക്കേജ്](https://pypi.org/project/picamera/) ഫംഗ്ഷനുകൾ സിമുലേറ്റ് ചെയ്ത് Camera സെൻസറുമായി സംസാരിക്കാൻ CounterFit ശിം ഇൻസ്റ്റാൾ ചെയ്യുന്നു. വെർച്വൽ എൻവയോൺമെന്റ് സജീവമാക്കി ടെർമിനൽ ഉപയോഗിച്ച് ഇത് ഇൻസ്റ്റാൾ ചെയ്യുന്നത് ഉറപ്പാക്കുക. ```sh pip install counterfit-shims-picamera ``` 1. CounterFit വെബ് ആപ്പ് പ്രവർത്തനത്തിലാണ് എന്ന് ഉറപ്പാക്കുക 1. ഒരു ക്യാമറ സൃഷ്‌ടിക്കുക: 1. *Sensors* പെയിൻിലുള്ള *Create sensor* ബോക്സിൽ *Sensor type* ഡ്രോപ് ഡൗൺ ബോക്സിൽ നിന്ന് *Camera* തിരഞ്ഞെടുക്കുക. 1. *Name* ആയി `Picamera` സജ്ജമാക്കുക 1. ക്യാമറ സൃഷ്ടിക്കാൻ **Add** ബട്ടൺ തിരഞ്ഞെടുക്കുക ![The camera settings](../../../../../translated_images/ml/counterfit-create-camera.a5de97f59c0bd3cb.webp) ക്യാമറ സൃഷ്ടിച്ച് സെൻസറുകളുടെ പട്ടികയിൽ കാണിക്കും. ![The camera created](../../../../../translated_images/ml/counterfit-camera.001ec52194c8ee5d.webp) ## ക്യാമറ പ്രോഗ്രാം ചെയ്യുക വെർച്വൽ IoT ഉപകരണം ഇപ്പോൾ വെർച്വൽ ക്യാമറ ഉപയോഗിക്കാൻ പ്രോഗ്രാം ചെയ്യാവുന്നതാണ്. ### ടാസ്‌ക് - ക്യാമറ പ്രോഗ്രാം ചെയ്യുക ഉപകരണം പ്രോഗ്രാം ചെയ്യുക. 1. VS Codeയിൽ `fruit-quality-detector` ആപ്പ് തുറന്ന് ഉറപ്പാക്കുക 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` ഒബ്ജക്റ്റിൽ നിന്ന് മുഴുവൻ ഡാറ്റ വായിച്ച് ഫയലിൽ എഴുതി സേവ് ചെയ്യുന്നുണ്ട്. > 💁 സാങ്കേതികമായി `BytesIO` ഒബ്ജക്റ്റിന് പകരം ഫയൽനാമം `camera.capture` കോളിൽ പാസ്സ് ചെയ്താൽ നേരിട്ട് ഫയലിലേക്ക് ചിത്രം പകർത്താവുന്നതാണ്. ഈ കൗണ്ടിഫിറ്റ് പാഠത്തിൽ പിന്നീട് ചിത്ര ക്ലാസിഫയറിലേക്ക് ചിത്രം അയയ്ക്കുന്നതിന് `BytesIO` ഒബ്ജക്റ്റ് ഉപയോഗിക്കുന്നതാണ് കാരണം. 1. CounterFit-ൽ ക്യാമറ പിടിക്കുന്ന ചിത്രം കോൺഫിഗർ ചെയ്യുക. *Source* - *File* ആയി സജ്ജമാക്കി ഒരു ചിത്രം അപ്‌ലോഡ് ചെയ്യമെന്നോ, *Source* - *WebCam* ആയി സജ്ജമാക്കിയാൽ നിങ്ങളുടെ വെബ്‌ക്യാമിൽ നിന്നുള്ള ചിത്രങ്ങൾ പിടിക്കപ്പെടും. ചിത്രം തിരഞ്ഞെടുക്കുകയും വെബ്‌ക്യാം തിരഞ്ഞെടുക്കുകയും ചെയ്തതിന് ശേഷം **Set** ബട്ടൺ വലുതാക്കുക. ![CounterFit with a file set as the image source, and a web cam set showing a person holding a banana in a preview of the webcam](../../../../../translated_images/ml/counterfit-camera-options.eb3bd5150a8e7dff.webp) 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) ഉപയോഗിച്ച് ഭാഷാന്തരപ്പെടുത്തിയിരിക്കുന്നു. ഞങ്ങൾ സത്യസന്ധതക്ക് ശ്രമിക്കുമ്പോഴും, സ്വയമേവ പ്രവേശിപ്പിച്ച ഭാഷാന്തരത്തിൽ പിഴവുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടായിരിക്കാമെന്ന് ശ്രദ്ധിക്കണം. സഹജ ഭാഷയിൽ ഉള്ള യഥാർത്ഥ ഡോക്യുമെന്റ് മാത്രമാണ് അവകാശപ്പെട്ട സ്രോതസ്സ് എന്ന് പരിഗണിക്കേണ്ടത്. പ്രധാനപ്പെട്ട വിവരങ്ങൾക്ക് പ്രൊഫഷണൽ മനുഷ്യ ഭാഷാന്തരണം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ ഭാഷാന്തരത്തിന്റെ ഉപയോഗത്തിൽ നിന്നുണ്ടാകുന്ന തെറ്റായ ധാരണകളോ വീഴ്ചകളോ സംബന്ധിച്ച് ഞങ്ങൾ ഉത്തരവാദിതി വഹിക്കുന്നില്ല.