অ্যান্ড্রয়েড এনডিকে (সি) এ ব্যবহারকারীর পরিবেশ বুঝুন

আপনার নিজের অ্যাপে কীভাবে দৃশ্য শব্দার্থতত্ত্ব API ব্যবহার করবেন তা শিখুন।

দৃশ্য শব্দার্থতত্ত্ব এপিআই ডেভেলপারদের এমএল মডেল-ভিত্তিক, রিয়েল-টাইম শব্দার্থিক তথ্য প্রদান করে ব্যবহারকারীর চারপাশের দৃশ্য বুঝতে সক্ষম করে। একটি বহিরঙ্গন দৃশ্যের একটি চিত্র দেওয়া হলে, API প্রতিটি পিক্সেলের জন্য একটি লেবেল প্রদান করে একটি উপযোগী শব্দার্থিক শ্রেণীতে, যেমন আকাশ, ভবন, গাছ, রাস্তা, ফুটপাত, যানবাহন, ব্যক্তি এবং আরও অনেক কিছু। পিক্সেল লেবেল ছাড়াও, দৃশ্য শব্দার্থবিদ্যা API প্রতিটি পিক্সেল লেবেলের জন্য আত্মবিশ্বাসের মান এবং একটি বহিরঙ্গন দৃশ্যে একটি প্রদত্ত লেবেলের ব্যাপকতা অনুসন্ধান করার একটি সহজ-ব্যবহারযোগ্য উপায় প্রদান করে।

বাম থেকে ডানে, একটি ইনপুট চিত্রের উদাহরণ, পিক্সেল লেবেলের শব্দার্থিক চিত্র এবং সংশ্লিষ্ট আত্মবিশ্বাসের চিত্র:

ইনপুট ইমেজ, সিমেন্টিক ইমেজ এবং সিমেন্টিক কনফিডেন্স ইমেজের উদাহরণ।

পূর্বশর্ত

এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি মৌলিক AR ধারণা এবং কীভাবে একটি ARCore সেশন কনফিগার করবেন তা বুঝতে পেরেছেন।

দৃশ্য শব্দার্থ সক্রিয় করুন

একটি নতুন ARCore সেশনে , একজন ব্যবহারকারীর ডিভাইস দৃশ্য শব্দার্থতত্ত্ব API সমর্থন করে কিনা তা পরীক্ষা করুন৷ প্রসেসিং পাওয়ার সীমাবদ্ধতার কারণে সমস্ত ARCore-সামঞ্জস্যপূর্ণ ডিভাইস দৃশ্য শব্দার্থবিদ্যা API সমর্থন করে না।

সম্পদ সংরক্ষণ করতে, দৃশ্য শব্দার্থবিদ্যা ARCore-এ ডিফল্টরূপে অক্ষম করা হয়। আপনার অ্যাপ্লিকেশন দৃশ্য শব্দার্থবিদ্যা API ব্যবহার করতে শব্দার্থিক মোড সক্ষম করুন.

// Check whether the user's device supports the Scene Semantics API.
int32_t is_scene_semantics_supported = 0;
ArSession_isSemanticModeSupported(ar_session, AR_SEMANTIC_MODE_ENABLED, &is_scene_semantics_supported);

// Configure the session for AR_SEMANTIC_MODEL_ENABLED.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);
if (is_scene_semantics_supported) {
  ArConfig_setSemanticMode(ar_session, ar_config, AR_SEMANTIC_MODE_ENABLED);
}
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);
ArConfig_destroy(ar_config);

শব্দার্থিক ইমেজ প্রাপ্ত

একবার দৃশ্য শব্দার্থবিদ্যা সক্ষম হলে, শব্দার্থক চিত্রটি পুনরুদ্ধার করা যেতে পারে। শব্দার্থিক চিত্রটি একটি AR_IMAGE_FORMAT_Y8 চিত্র, যেখানে প্রতিটি পিক্সেল ArSemanticLabel দ্বারা সংজ্ঞায়িত একটি শব্দার্থিক লেবেলের সাথে মিলে যায়।

শব্দার্থিক চিত্র অর্জন করতে ArFrame_acquireSemanticImage() ব্যবহার করুন:

// Retrieve the semantic image for the current frame, if available.
ArImage* semantic_image = NULL;
if (ArFrame_acquireSemanticImage(ar_session, ar_frame, &semantic_image) != AR_SUCCESS) {
  // No semantic image retrieved for this frame.
  // The output image may be missing for the first couple frames before the model has had a chance to run yet.
  return;
}
// If a semantic image is available, use it here.

আউটপুট শব্দার্থিক ছবিগুলি ডিভাইসের উপর নির্ভর করে সেশনের শুরু থেকে প্রায় 1-3 ফ্রেমের পরে পাওয়া উচিত।

আত্মবিশ্বাস ইমেজ প্রাপ্ত

শব্দার্থিক চিত্র ছাড়াও, যা প্রতিটি পিক্সেলের জন্য একটি লেবেল সরবরাহ করে, এপিআই সংশ্লিষ্ট পিক্সেল আত্মবিশ্বাসের মানগুলির একটি আত্মবিশ্বাসের চিত্রও সরবরাহ করে। কনফিডেন্স ইমেজ হল একটি AR_IMAGE_FORMAT_Y8 ইমেজ, যেখানে প্রতিটি পিক্সেল পরিসরে একটি মানের সাথে সামঞ্জস্যপূর্ণ [0, 255] , প্রতিটি পিক্সেলের জন্য শব্দার্থিক লেবেলের সাথে সম্পর্কিত সম্ভাব্যতার সাথে সম্পর্কিত।

ArFrame_acquireSemanticConfidenceImage() ব্যবহার করুন শব্দার্থিক আত্মবিশ্বাসের চিত্র অর্জন করতে:

// Retrieve the semantic confidence image for the current frame, if available.
ArImage* semantic_confidence_image = NULL;
if (ArFrame_acquireSemanticConfidenceImage(ar_session, ar_frame, &semantic_confidence_image) != AR_SUCCESS) {
  // No semantic confidence image retrieved for this frame.
  // The output image may be missing for the first couple frames before the model has had a chance to run yet.
  return;
}
// If a semantic confidence image is available, use it here.

ডিভাইসের উপর নির্ভর করে আউটপুট কনফিডেন্স ইমেজগুলি সেশনের শুরু থেকে প্রায় 1-3 ফ্রেমের পরে পাওয়া উচিত।

একটি শব্দার্থিক লেবেলের জন্য পিক্সেলের ভগ্নাংশ জিজ্ঞাসা করুন

আপনি বর্তমান ফ্রেমে পিক্সেলের ভগ্নাংশকেও জিজ্ঞাসা করতে পারেন যা একটি নির্দিষ্ট শ্রেণীর অন্তর্গত, যেমন আকাশ। এই ক্যোয়ারীটি শব্দার্থিক ইমেজ ফেরত দেওয়া এবং একটি নির্দিষ্ট লেবেলের জন্য পিক্সেল-ভিত্তিক অনুসন্ধান করার চেয়ে বেশি কার্যকর। প্রত্যাবর্তিত ভগ্নাংশ হল [0.0, 1.0] পরিসরে একটি ফ্লোট মান।

একটি প্রদত্ত লেবেলের জন্য ভগ্নাংশ অর্জন করতে ArFrame_getSemanticLabelFraction() ব্যবহার করুন:

// Retrieve the fraction of pixels for the semantic label sky in the current frame.
float out_fraction = 0.0f;
if (ArFrame_getSemanticLabelFraction(ar_session, ar_frame, AR_SEMANTIC_LABEL_SKY, &out_fraction) != AR_SUCCESS) {
  // No fraction of semantic labels was retrieved for this frame.
}