8.9 KiB
ដែលហៅម៉ាស៊ីនកំណត់អ្វីមួយពីឧបករណ៍ IoT របស់អ្នក - Wio Terminal
ពេលដែលម៉ាស៊ីនកំណត់អ្វីមួយរបស់អ្នកបានបោះពុម្ពផ្សាយរួច អ្នកអាចប្រើវាពីឧបករណ៍ IoT របស់អ្នក។
ចម្លងគំរោងម៉ាស៊ីនចាត់ថ្នាក់រូបភាព
ភាគច្រើននៃម៉ាស៊ីនកំណត់ស្តុករបស់អ្នកគឺដូចគ្នានឹងម៉ាស៊ីនចាត់ថ្នាក់រូបភាពដែលអ្នកបានបង្កើតនៅមេរៀនមុន។
ប៉ារម៉ង់ - ចម្លងគំរោងម៉ាស៊ីនចាត់ថ្នាក់រូបភាព
-
ភ្ជាប់ ArduCam របស់អ្នកទៅ Wio Terminal តាមជំហានពី មេរៀនទី 2 នៃគម្រោងផលិតកម្ម។
អ្នកអាចចង់ដាក់កាមេរ៉ានៅទីតាំងតែមួយ ដូចជាការចងខ្សែឲ្យនៅលើប្រអប់ឬលើកញ្ចប់ ឬដាក់កាមេរ៉ាទៅលើប្រអប់ជាមួយក្លឹបស្ដើងទ្វេជាន់។
-
បង្កើតគំរោងថ្មីមួយសម្រាប់ Wio Terminal ប្រើ PlatformIO ហើយដាក់ឈ្មោះគំរោងនេះជា
stock-counter។ -
ស្ទួនជំហានពី មេរៀនទី 2 នៃគម្រោងផលិតកម្ម ដើម្បីថតរូបពីកាមេរ៉ា។
-
ស្ទួនជំហានពី មេរៀនទី 2 នៃគម្រោងផលិតកម្ម ដើម្បីហៅម៉ាស៊ីនចាត់ថ្នាក់ទំរង់រូបភាព។ ភាគច្រើននៃកូដនេះនឹងត្រូវប្រើឡើងវិញដើម្បីកំណត់វត្ថុ។
បម្លែងកូដពីម៉ាស៊ីនចាត់ថ្នាក់ទៅកំណត់វត្ថុរូបភាព
កូដដែលអ្នកបានប្រើដើម្បីចាត់ថ្នាក់រូបភាពមានស្រដៀងគ្នាជាមួយកូដកំណត់វត្ថុ។ ការប្រែប្រួលសំខាន់គឺ URL ដែលបានហៅដែលអ្នកទទួលបានពី Custom Vision និងលទ្ធផលនៃការហៅ។
ប៉ារម៉ង់ - បម្លែងកូដពីម៉ាស៊ីនចាត់ថ្នាក់ទៅកំណត់វត្ថុ
-
បន្ថែមផ្នែក include ខាងលើនៃឯកសារ
main.cpp៖#include <vector> -
ដូរឈ្មោះមុខងារ
classifyImageទៅជាdetectStockទាំងឈ្មោះមុខងារ និងការហៅនៅក្នុងមុខងារbuttonPressed។ -
នៅលើមុខងារ
detectStockថ្លែងអថេរ threshold ដើម្បីកំណត់ចេញការវាយតម្លៃទាបៗ៖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ជំនួសមាតិការបស់forloop ដែលរុញតាមការវាយតម្លៃជាមួយខាងក្រោម៖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);វារុញតាមការវាយតម្លៃប្រៀបធៀបប្រហែលជាមួយ threshold។ ការវាយតម្លៃទាំងអស់ដែលមានប្រហែលខ្ពស់ជាង threshold ត្រូវបានបញ្ចូលទៅក្នុង
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%💁 អ្នកប្រហែលជាត្រូវការ ប្តូរតម្លៃ
thresholdទៅតម្លៃសមរម្យសម្រាប់រូបភាពរបស់អ្នក។អ្នកនឹងអាចមើលឃើញរូបភាពដែលបានថត និងតម្លៃទាំងនេះនៅផ្ទាំង Predictions ក្នុង Custom Vision។
💁 អ្នកអាចស្វែងរកកូដនេះនៅក្នុងថត code-detect/wio-terminal។
😀 កម្មវិធីរាប់ស្តុករបស់អ្នកជោគជ័យ!
ការបដិសេធ៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI Co-op Translator។ ក្នុងកំឡុងពេលយើងខិតខំដើម្បីទទួលបានភាពត្រឹមត្រូវ សូមយល់ព្រមថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬការបញ្ចូលខុសបាន។ ឯកសារដើមដែលមានភាសាបណ្ដើរជាភាសាមាតុភូមិគួរត្រូវបានចាត់ទុកថាជាការបញ្ជាក់ផ្លូវការជាដើម។ សម្រាប់ព័ត៌មានសំខាន់ណាស់ សូមផ្តល់អនុសាសន៍ឲ្យមានការបកប្រែដោយមនុស្សជាជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសប្រាជ្ញាដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
