7.2 KiB
اپنے IoT ڈیوائس سے آبجیکٹ ڈیٹیکٹر کو کال کریں - Wio Terminal
جب آپ کا آبجیکٹ ڈیٹیکٹر پبلش ہو جائے، تو اسے آپ کے IoT ڈیوائس سے استعمال کیا جا سکتا ہے۔
امیج کلاسیفائر پروجیکٹ کو کاپی کریں
آپ کے اسٹاک ڈیٹیکٹر کا زیادہ تر حصہ وہی ہے جو آپ نے پچھلے سبق میں امیج کلاسیفائر کے لیے بنایا تھا۔
کام - امیج کلاسیفائر پروجیکٹ کو کاپی کریں
-
اپنے ArduCam کو Wio Terminal سے کنیکٹ کریں، مینوفیکچرنگ پروجیکٹ کے سبق نمبر 2 کے مراحل کو فالو کرتے ہوئے۔
آپ کیمرے کو ایک جگہ پر فکس کرنے کا سوچ سکتے ہیں، جیسے کہ کیبل کو کسی باکس یا کین کے اوپر لٹکا کر، یا ڈبل سائیڈ ٹیپ کے ذریعے کیمرے کو باکس پر فکس کر کے۔
-
PlatformIO کا استعمال کرتے ہوئے ایک نیا Wio Terminal پروجیکٹ بنائیں۔ اس پروجیکٹ کا نام
stock-counter
رکھیں۔ -
مینوفیکچرنگ پروجیکٹ کے سبق نمبر 2 کے مراحل کو دہرائیں تاکہ کیمرے سے تصاویر حاصل کی جا سکیں۔
-
مینوفیکچرنگ پروجیکٹ کے سبق نمبر 2 کے مراحل کو دہرائیں تاکہ امیج کلاسیفائر کو کال کیا جا سکے۔ اس کوڈ کا زیادہ تر حصہ آبجیکٹ ڈیٹیکشن کے لیے دوبارہ استعمال ہوگا۔
کوڈ کو کلاسیفائر سے امیج ڈیٹیکٹر میں تبدیل کریں
امیجز کو کلاسیفائی کرنے کے لیے استعمال ہونے والا کوڈ آبجیکٹس کو ڈیٹیکٹ کرنے کے کوڈ سے بہت ملتا جلتا ہے۔ بنیادی فرق وہ URL ہے جو آپ نے Custom Vision سے حاصل کیا، اور کال کے نتائج ہیں۔
کام - کوڈ کو کلاسیفائر سے امیج ڈیٹیکٹر میں تبدیل کریں
-
main.cpp
فائل کے اوپر درج ذیل include directive شامل کریں:#include <vector>
-
classifyImage
فنکشن کا نام تبدیل کر کےdetectStock
رکھیں، فنکشن کے نام اورbuttonPressed
فنکشن میں کال دونوں جگہ۔ -
detectStock
فنکشن کے اوپر ایک تھریش ہولڈ ڈکلیئر کریں تاکہ کم پروبیبلیٹی والے ڈیٹیکشنز کو فلٹر کیا جا سکے:const float threshold = 0.3f;
امیج کلاسیفائر کے برعکس جو ہر ٹیگ کے لیے صرف ایک نتیجہ دیتا ہے، آبجیکٹ ڈیٹیکٹر متعدد نتائج دیتا ہے، لہذا کم پروبیبلیٹی والے نتائج کو فلٹر کرنا ضروری ہے۔
-
detectStock
فنکشن کے اوپر ایک فنکشن ڈکلیئر کریں جو پیشگوئیوں کو پراسیس کرے:void processPredictions(std::vector<JsonVariant> &predictions) { for(JsonVariant prediction : predictions) { String tag = prediction["tagName"].as<String>(); float probability = prediction["probability"].as<float>(); char buff[32]; sprintf(buff, "%s:\t%.2f%%", tag.c_str(), probability * 100.0); Serial.println(buff); } }
یہ پیشگوئیوں کی فہرست لیتا ہے اور انہیں سیریل مانیٹر پر پرنٹ کرتا ہے۔
-
detectStock
فنکشن میں، پیشگوئیوں کے لیے لوپ کے مواد کو درج ذیل سے تبدیل کریں:std::vector<JsonVariant> passed_predictions; for(JsonVariant prediction : predictions) { float probability = prediction["probability"].as<float>(); if (probability > threshold) { passed_predictions.push_back(prediction); } } processPredictions(passed_predictions);
یہ پیشگوئیوں کے ذریعے لوپ کرتا ہے، پروبیبلیٹی کو تھریش ہولڈ سے موازنہ کرتا ہے۔ تمام پیشگوئیاں جن کی پروبیبلیٹی تھریش ہولڈ سے زیادہ ہوتی ہے، ایک
list
میں شامل کی جاتی ہیں اورprocessPredictions
فنکشن کو پاس کی جاتی ہیں۔ -
اپنا کوڈ اپلوڈ کریں اور چلائیں۔ کیمرے کو شیلف پر موجود اشیاء کی طرف پوائنٹ کریں اور C بٹن دبائیں۔ آپ سیریل مانیٹر میں آؤٹ پٹ دیکھ سکیں گے:
Connecting to WiFi.. Connected! Image captured Image read to buffer with length 17416 tomato paste: 35.84% tomato paste: 35.87% tomato paste: 34.11% tomato paste: 35.16%
💁 آپ کو اپنی تصاویر کے لیے مناسب تھریش ہولڈ ایڈجسٹ کرنے کی ضرورت ہو سکتی ہے۔
آپ وہ تصویر دیکھ سکیں گے جو لی گئی تھی، اور یہ ویلیوز Predictions ٹیب میں Custom Vision میں نظر آئیں گی۔
💁 آپ یہ کوڈ code-detect/wio-terminal فولڈر میں تلاش کر سکتے ہیں۔
😀 آپ کا اسٹاک کاؤنٹر پروگرام کامیاب رہا!
ڈسکلیمر:
یہ دستاویز AI ترجمہ سروس Co-op Translator کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔