আমি কীভাবে একটি সুপার-ফাস্ট হাসি ট্র্যাকিং অ্যাপ তৈরি করব?

এআরকিটটি ভীতিজনক মনে হতে পারে তবে আপনার যদি ইতিমধ্যে আইওএস অ্যাপ্লিকেশন তৈরির বেসিক অভিজ্ঞতা রয়েছে তবে তা বিবেচ্য নয়।

আমি করণ শিখেছি এবং এআরকিট-এর সাথে চারপাশে খেলেছি এবং অভ্যস্ত হওয়ার জন্য বেসিক অ্যাপ্লিকেশন তৈরি করেছি। এই পোস্টে, আমি একটি সাধারণ ফেস ট্র্যাকিং অ্যাপ তৈরি করে যা শিখেছি তা পর্যালোচনা করতে যাচ্ছি going

আমি এটি 3 অংশে করি:

  1. প্রাথমিক সেটআপ → প্রথমে আপনাকে ক্যামেরার অনুমতি নিতে হবে এবং ডিভাইসটি আরকিট ব্যবহার করতে পারে তা নিশ্চিত করা দরকার।
  2. হাসি ট্র্যাকিং AR আরকিট দিয়ে হাসি ট্র্যাকিং শুরু করুন। সম্ভবত আপনি এখানে কি জন্য।
  3. ব্যবহারকারী ইন্টারফেস a আমাদের অ্যাপ্লিকেশনটির জন্য এমন একটি ব্যবহারকারী ইন্টারফেস যুক্ত করুন যা একটি হাসির প্রতিক্রিয়া জানায়।

এই লেখার হিসাবে, এক্সকোড সিমুলেটর সামনের মুখী ক্যামেরাটি সমর্থন করে না, সুতরাং অ্যাপ্লিকেশন চালানোর জন্য আপনার একটি আসল ডিভাইস প্রয়োজন। আপনার ডিভাইসে অবশ্যই একটি ট্রুডেপথ ক্যামেরা থাকতে হবে (8 ই মে, 2019 পর্যন্ত কেবল আইফোন এক্স এবং আইফোন এক্স প্লাসের মধ্যে একটি ট্রুডেপথ ক্যামেরা থাকবে)।

অবশেষে, কপি পেস্ট ক্লাবে আমার সহকর্মীদের জন্য, সমস্ত কোড গিথুবে উপলভ্য।

প্রাথমিক সেটআপ

প্রথমে এক্সকোডটি খুলুন এবং "স্মাইলট্র্যাকার" (বা আপনি যে নামটি পছন্দ করেন) নামে একটি নতুন প্রকল্প তৈরি করুন।

আমরা ফেস ট্র্যাকিং শুরু করার আগে আমাদের দুটি জিনিস করা দরকার:

  1. আপনার ডিভাইসটি আরকিটকে সমর্থন করে তা নিশ্চিত করুন
  2. আপনার ডিভাইসের ক্যামেরা অ্যাক্সেস করার অনুমতি পান

আপনার নতুন প্রকল্পে, ViewController.swift খুলুন। ইউআইকিট আমদানি করে ফাইলের শীর্ষে, নিম্নলিখিত লাইনটি যুক্ত করুন: "এআরকিট আমদানি করুন"। এইভাবে আমরা মুখের ট্র্যাকিংকে আরও সহজ করার জন্য অ্যাপল সরবরাহ করে এমন সমস্ত অতিরিক্ত অ্যাক্সেস করতে পারি।

এখন নিম্নলিখিত কোডটি ভিউডিল্ডে পেস্ট করুন:

গার্ড আরিফ্রেসট্রাকিং কনফিগারেশন.আইএস সমর্থিত অন্য {মারাত্মক এরির ("ডিভাইস ফেস ট্র্যাকিং সমর্থন করে না")}

এআরফিডস ট্র্যাকিং কনফিগারেশন.আইসসপোর্টড একটি বুলিয়ান মান যা সত্য যদি সত্য হয় যদি অ্যাপটি চালিত হয় ডিভাইসটি ফেস ট্র্যাকিং সমর্থন করে; অন্যথায়, মিথ্যা। এই ক্ষেত্রে যদি ডিভাইসটি মুখের স্বীকৃতিটিকে সমর্থন না করে তবে আমরা মারাত্মক ত্রুটির সাথে অ্যাপটিকে ক্রাশ করব।

এর পরে, ক্যামেরাটি ব্যবহারের অনুমতি নেওয়া যাক। আমাদের গার্ড স্টেটমেন্টের অধীনে ভিউডিডলডে, যুক্ত করুন:

AVCaptureDevice.requestAccess (এর জন্য: AVMediaType.video) {মঞ্জুর করা থাকলে (মঞ্জুর করা) {Dispatch.main.sync {// আমরা এই ফাংশনটি এক মিনিটের মধ্যে সেল্ফ.সেটআপসিলিট্র্যাকার () implement} অন্য {ফ্যাটালআরার ("কোনও ক্যামেরা অনুমোদন নেই) এ প্রয়োগ করব মঞ্জুর! ")}}

এখানে আমরা ডিভাইসটিকে ক্যামেরার অনুমতিগুলির জন্য অনুরোধ করতে বলি। যখন ব্যবহারকারী অনুমতি দেয়, আমরা ফাংশনটি সম্পাদন করি যা আমাদের হাসি ট্র্যাকিং সেট করে। বাগ সম্পর্কে চিন্তা করবেন না, আমরা শীঘ্রই এই বৈশিষ্ট্যটি প্রয়োগ করব।

আমরা Dispatch.main.sync এ ফাংশনটি অন্তর্ভুক্ত করি কারণ আমরা এই ফাংশনে ইউআই উপাদান যুক্ত করছি, যা কেবলমাত্র মূল থ্রেডের পক্ষে সম্ভব।

আমাদের তথ্য.পিস্টে ক্যামেরা ব্যবহারের বিবরণ যুক্ত করতে হবে। তথ্য.পুলিস্ট খুলুন এবং একটি নতুন লাইন যুক্ত করুন (আপনি শেষ লাইনটি হাইলাইট করে এবং এন্টার টিপে এটি করতে পারেন)।

আপনি সারি তৈরি সারিটিতে, গোপনীয়তা - কী কলামে ক্যামেরা ব্যবহারের বিবরণ যুক্ত করুন এবং টাইপ কলামটি স্ট্রিংয়ে সেট করা আছে তা নিশ্চিত করুন। আপনি মান কলামটি ফাঁকা ছেড়ে দিতে পারেন বা কীভাবে ক্যামেরা ব্যবহার করবেন তা ব্যবহারকারীকে বোঝাতে একটি বার্তা যুক্ত করতে পারেন।

আপনার তথ্য.পালিস্টকে এখন এই জাতীয় কিছু দেখা উচিত:

আপনি যদি ইতিমধ্যে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করতে চান তবে আপনি সেটআপসমাইলট্র্যাকার () নামের লাইনে মন্তব্য করতে পারেন। আপনি এটি সম্পর্কে পরে মন্তব্য করেছেন তা নিশ্চিত করুন।

এখন আপনি যখন নিজের অ্যাপ্লিকেশনটি চালাবেন তখন আপনাকে একটি পপআপ দেখতে পাওয়া উচিত যা আপনাকে ক্যামেরার অনুমতিগুলি সক্ষম করতে বলছে। আপনি যদি না বলে থাকেন তবে অ্যাপটি চালানোর জন্য এই অনুমতিগুলি সক্ষম করতে আপনার অ্যাপ্লিকেশন সেটিংসে যেতে হবে।

যদি অ্যাপটি ক্র্যাশ হয় তবে আমাদের কী ভুল হয়েছে তা দেখতে আমাদের দুটি ত্রুটি বার্তার জন্য কনসোলটি পরীক্ষা করুন।

হাসি ট্র্যাকিং

ViewController.swift খুলুন এবং ViewController শীর্ষে নিম্নলিখিত পরিবর্তনশীল যুক্ত করুন:

ভিউকন্ট্রোলার শ্রেণি: ইউআইভিউকন্ট্রোলার {দৃশ্যদর্শনটি দিন = এআরএসসিএনভিউ ()
ডানডাউনলোড () D ... Over ওভাররাইড করুন
}

এআরএসসিএনভিউ একটি এআরসেশন দিয়ে সজ্জিত যা আপনার আইফোন এআর অভিজ্ঞতা সমন্বয় করতে ব্যবহার করে। সামনের মুখের ক্যামেরার মাধ্যমে আমরা আমাদের ব্যবহারকারীর মুখ বিশ্লেষণ করতে দৃশ্যের ভিউ থেকে এআরসেশন ব্যবহার করব।

ভিডডিডলোডের অধীনে আপনার ফাইলে এই ফাংশনটি যুক্ত করুন:

func setupSmileTracker () configuration আসুন কনফিগারেশন = এআরফ্রেসট্রাকিং কনফিগারেশন () দৃশ্যে ভিউ.সেসিওন.আরুন (কনফিগারেশন) দৃশ্যভিউ.ডিলেগেট = স্ব দর্শন

এখানে আমরা একটি ফেস ট্র্যাকিং কনফিগারেশন তৈরি করেছি এবং এটি দৃশ্যের ভিউ'র এআরসেশন চালানোর জন্য ব্যবহার করেছি।

তারপরে আমরা দৃশ্যের প্রতিনিধিটিকে স্ব-স্বতে সেট করি এবং এটি আমাদের দৃশ্যে যুক্ত করি।

এক্সকোড আপনাকে বলেছে যে এখানে একটি সমস্যা আছে কারণ ভিউকন্ট্রোলার এআরএসসিএনভিউডেলিগেটের সাথে সামঞ্জস্যপূর্ণ নয়। ফাইলের শীর্ষে ভিউকন্ট্রোলার ঘোষিত যেখানে যান এবং লাইনটি নিম্নলিখিতটিতে পরিবর্তন করুন:

ভিউকন্ট্রোলার শ্রেণি: ভিউকন্ট্রোলার, এআরএসসিএনভিউ ডেলিগেট {...}

এখন আপনার ভিউকন্ট্রোলার শ্রেণির সেটআপসিলিট ট্র্যাকারে এই এআরএসসিএনভিউ ডেলিগেট ফাংশনটি যুক্ত করুন:

ফানক রেন্ডারার (_ রিেন্ডারার: ​​এসসিএনএসসিনি রেন্ডারার, ডিওপডেট নোড: এসসিএননোড, অ্যাঙ্কারের জন্য: এআআআআআআআএনআর) {
}

আমাদের দৃশ্য প্রতিবার আপডেট হওয়ার সাথে সাথে রেন্ডারারটি চালিত হয় এবং আমাদের সাথে আরএঞ্চর সরবরাহ করে যা ব্যবহারকারীর মুখের সাথে মেলে।

ফেস ট্র্যাকিংয়ের অভিজ্ঞতা তৈরি করা সহজ করার জন্য, অ্যাপল স্বয়ংক্রিয়ভাবে একটি আরআরফিস্যাঙ্কার তৈরি করবে এবং এটি চালানোর জন্য যখন আমরা একটি এআরফ্রেসট্র্যাকিং কনফিগারেশন ব্যবহার করি তখন এটি আমাদের সেশনে যুক্ত হবে। এই এআরএফিসআঞ্চারটি এরপরে একটি এআআআআরএনচর হিসাবে রেন্ডারকে দেওয়া হয়।

রেন্ডারারে নিম্নলিখিত কোড যুক্ত করুন:

ফানক রেন্ডারার (_রেন্ডারার: ​​এসিএনএসসিনি রেন্ডারার, ডু ইউপডেট নোড: এসএনএন নোড, অ্যাঙ্কার: এআরআনচর) {// 1 ঘড়ি ফেসআনচার = অ্যাঙ্কর হিসাবে ছেড়েছেন? আরএফেরিক্স অ্যাঙ্কর {ফিরে}
// 2 বামসামিলেভ্যালু = ফেসঅ্যাঙ্কার.বলেন্ডশপগুলি [.মুথস্মিলিফিট] হিসাবে চলুন! সিজিফ্লোট ডানদিকে ছেড়ে দাওসাইমিলিও = ফেসঅ্যাঙ্কর.বলেন্ডশ্যাপস [.মাউথসাইলাইট] হিসাবে! সিজিফ্লোট
// 3 মুদ্রণ (বাম স্লাইভ্যালু, রাইটস্মাইলভ্যালু)
}

এই ভূমিকায় অনেক কিছুই চলছে তাই আমি পদক্ষেপগুলি (রে রেন্ডারলিচ স্টাইল) সংখ্যায়িত করেছি।

পদক্ষেপ 1-এ আমরা ARAunchor কে একটি আরআরফিজআনকরে রূপান্তর করি এবং এটিকে ফেসঅ্যাঙ্কর ভেরিয়েবলে নির্ধারণ করি।

এআরএফিসএঞ্চারটিতে বর্তমান অবস্থান এবং ওরিয়েন্টেশন, টপোলজি এবং আমরা যে মুখটি অনুসরণ করছি তার মুখের অভিব্যক্তি সম্পর্কে তথ্য রয়েছে।

এআরফিসে অ্যাঙ্কর তার ভেরিয়েবল ব্লেন্ডশ্যাপগুলিতে ফেসিয়াল এক্সপ্রেশনের তথ্য সঞ্চয় করে। ব্লেন্ডশ্যাপস এমন একটি অভিধান যা বিভিন্ন মুখের বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণ সহগগুলি সঞ্চয় করে। আপনি যদি আগ্রহী হন তবে আমরা অ্যাপলের ডকুমেন্টেশনে মুখের বৈশিষ্ট্যগুলির সম্পূর্ণ তালিকাটি পড়ার পরামর্শ দিই। (দ্রষ্টব্য: আপনি যদি ভ্রূণ ট্র্যাকিং যুক্ত করতে চান তবে এটি করার একটি উপায় এখানে)

দ্বিতীয় ধাপে, আমরা একটি সিজিফ্লোয়ট পেতে মুখের স্মাইলিফট এবং মুখসৌন্যরাইট বোতামগুলি ব্যবহার করার জন্য ফেসএঙ্কর.এলএন্ডশ্যাপগুলি ব্যবহার করব যা জানায় যে ব্যবহারকারীর মুখের বাম এবং ডান দিকগুলি কতটা হাসছে।

অবশেষে, পদক্ষেপ 3 কেবলমাত্র দুটি মান মুদ্রণ করে যাতে আপনি নিশ্চিত করতে পারেন যে তারা সঠিকভাবে কাজ করছে।

এই মুহুর্তে, আপনার একটি অ্যাপ্লিকেশন থাকা উচিত যা:

  • ব্যবহারকারীর কাছ থেকে ক্যামেরা এবং ফেস ট্র্যাকিংয়ের অনুমতি পান
  • আরকিট দিয়ে ব্যবহারকারীর মুখের অভিব্যক্তিগুলি ট্র্যাক করে
  • ব্যবহারকারী তাদের মুখের বাম এবং ডানদিকে কনসোলে কতটা হাসছেন

আমরা দুর্দান্ত অগ্রগতি করেছি। সুতরাং সবকিছু ঠিকঠাকভাবে কাজ করছে কিনা তা নিশ্চিত হওয়ার জন্য এক সেকেন্ড নেওয়া যাক।

আপনি প্রথমবার অ্যাপটি চালাবেন, আপনি ক্যামেরা অনুমতি দিতে চান কিনা আপনাকে জিজ্ঞাসা করা হবে। আপনি হ্যাঁ বলছেন তা নিশ্চিত করুন।

এরপরে আপনাকে একটি ফাঁকা স্ক্রিনে নিয়ে যাওয়া হবে, তবে আপনার সন্ধান করা উচিত যে সিজিফ্লোট মানগুলি কনসোলে মুদ্রণ করছে (সেগুলি দেখার আগে কিছুটা বিলম্ব হতে পারে)।

আপনি যদি আপনার ফোনে হাসেন তবে আপনার মুদ্রিত মানগুলি খুঁজে পাওয়া উচিত। আপনি যত বেশি হাসবেন, সংখ্যা তত বেশি।

যদি এটি সঠিকভাবে কাজ করে তবে অভিনন্দন ! যদি কোনও ত্রুটি দেখা দেয় তবে আপনার ডিভাইসটি ফেস ট্র্যাকিং সমর্থন করে এবং আপনার ক্যামেরা অনুমতি চালু আছে তা ডাবল-পরীক্ষা করে দেখুন। আপনি যদি প্রথম থেকেই এই চিঠিটি অনুসরণ করেন তবে কনসোল উভয় ক্ষেত্রে ত্রুটি ফিরিয়ে দেবে।

ব্যবহারকারী ইন্টারফেস

সুতরাং আমরা মুখ অনুসরণ। এবার আসুন একটি হাসির প্রতিক্রিয়া জানাতে UI তৈরি করি।

প্রথমে সরাসরি দৃশ্যের আওতায় ফাইলের শুরুতে একটি নতুন ইউআইএলবেল যুক্ত করুন হাসি লেবেল।

ভিউকন্ট্রোলার শ্রেণি: ইউআইভিউকন্ট্রোলার scene দৃশ্যদর্শনটি দিন = এআরএসসিএনভিউ () হাসি লেবেলকে = ইউআইএলবেল ()
...

এটি এমন দৃষ্টিভঙ্গি যা ব্যবহারকারীর মুখের অভিব্যক্তিগুলিতে সাড়া দেয়।

আপনার সেটআপসমাইলট্র্যাকার ফাংশনের শেষে নিম্নলিখিত কোডটি যুক্ত করুন:

হাসিএলবেল.টেক্সট = "" হাস্যেলবেল.ফন্ট = ইউআইফন্ট.সিস্টেমফন্ট (সাইজ: 150)
ভিউ.এডিডসউভিউ (হাসিখবর)
// শর্তগুলি সেট করুন হাস্যেলবেল.টান্সলেটসঅটোরাইজিংমাস্কিন্টো কনট্রেনটস = ভুয়া হাসিবেল.সেন্টারএক্সরকমারট্রেন্ট (সমেতো: ভিউ.সেন্টারএক্সএনচারার) .আইএসএটিটিভ = সত্য হাসিখুব।

এখানে আমরা আমাদের হাসির লেবেলে বেসিক ইউজার ইন্টারফেস বৈশিষ্ট্যগুলি যুক্ত করি এবং সীমাবদ্ধতাগুলি সেট করি যাতে এটি পর্দার কেন্দ্রে থাকে। এখন আপনি অ্যাপটি চালানোর সময় মাঝখানে একটি বিশাল ইমোজি দেখতে হবে।

আপনি যখন ইমোজিটি দেখেন, আপনার ভিউকন্ট্রোলারের সাথে নিম্নলিখিত বৈশিষ্ট্য যুক্ত করুন:

ফানক হ্যান্ডেলসাইল (বামভ্যালু: সিজিফ্লোট, রাইটভ্যালু: সিজিফ্লোয়াট) smile হাসিভ্যালু = (বামভ্যালু + ডানমূল্য) / ২.০
সুইচ হাসিভ্যালু {কেস _ যেখানে হাসিভ্যালু> ০.০: হাসিএলবেল.টেক্সট = "" কেস যেখানে হাসিভ্যালু> ০.২: হাস্যেলবেল.টেক্সট = "" স্ট্যান্ডার্ড: হাস্যেলবেল.টেক্সট = ""}}

এই ক্যামেরাটিতে ব্যবহারকারী কতটা হার্ড হাসছেন তার উপর নির্ভর করে এই ফাংশনটি আমাদের হাসির লেবেলে ইমোজি পরিবর্তন করে। আমরা আমাদের এআরএফসিআনকরের দেওয়া বাম এবং ডান হাসির মানগুলির গড় থেকে হাসিওয়ালিউ গণনা করি (খুব বৈজ্ঞানিক, যেমনটি আমি জানি)।

স্যুইচ বিবৃতিতে এই মানটি অন্তর্ভুক্ত করুন। ব্যবহারকারী যত বেশি হাসবেন, আমাদের ইমোজি তত বেশি সুখী হবে।

অবশেষে, আমাদের রেন্ডারারের ফাংশনে ফিরে যান এবং হ্যান্ডেলসামাইলটিতে আমাদের বাম এবং ডান হাসির মান যুক্ত করতে এটি নীচে যুক্ত করুন:

DispatchQueue.main.async {self.handleSmile (বামভ্যালু: বামসামাইলভ্যালু, রাইটভ্যালু: রাইটস্মাইলভ্যালু)}

আবার, আমরা ডিসপ্যাচকিউ ব্যবহার করছি কারণ আমরা ইউআই পরিবর্তন করছি যা মূল থ্রেডে করা দরকার।

এখন আপনি যখন অ্যাপটি চালাবেন তখন ইমোজিটি আপনার কতটা হাসবে তার ভিত্তিতে পরিবর্তন হওয়া উচিত।

নীচের জিআইএফ-তে, আমি আমার মুখটি যুক্ত করেছি যাতে আপনি ক্যামেরা আউটপুট এবং ইমোজি দিয়ে কীভাবে কাজ করে তা দেখতে পারেন।

এটি কীভাবে কাজ করে তা দেখানোর জন্য আমি ক্যামেরা আউটপুট যুক্ত করেছি

আপনার অ্যাপ্লিকেশনটির ক্যামেরার আউটপুট নেই, তবে আপনি এআরএসসিএনভিউ, দৃশ্য ভিউ ওভারভিউতে যুক্ত করে এবং মাত্রাগুলি নির্দিষ্ট করে এটি যুক্ত করতে পারেন।

শেষ করি

আশা করি এই পোস্টটি আপনাকে আরকিট দিয়ে অ্যাপস তৈরি করতে সহায়তা করেছে।

আপনি যদি এই অ্যাপ্লিকেশনটিকে আরও প্রসারিত করতে চান তবে অন্যান্য সমস্ত মুখের বৈশিষ্ট্যগুলির উপরের তালিকাটি পরীক্ষা করতে পারেন যা আপনি ট্র্যাক করতে পারেন। আমি কীভাবে এটি প্রসারিত করব তা সম্পর্কে একটি নোট রেখেছি too

ফিরে আসুন এবং নিজের তৈরি করা কোনও দুর্দান্ত প্রকল্প সম্পর্কে মন্তব্য করুন। আমি এখনও এই বিষয়গুলিতে ব্যস্ত তাই আরও জটিল অ্যাপ্লিকেশনগুলি দেখে উত্তেজিত হবে।

প্রতিক্রিয়া এবং প্রশ্নের জন্য আমি এই অ্যাপের জন্য সমস্ত কোড গিথুবে পোস্ট করেছি। পড়া এবং শুভকামনার জন্য ধন্যবাদ!

পড়ার জন্য ধন্যবাদ! আপনি যদি এই গল্পটি উপভোগ করেন তবে আমি যে গল্পগুলিতে কাজ করছি এবং আমি কী করছি তার আপডেটের জন্য টুইটারে আমাকে অনুসরণ করুন।