সুচিপত্র:

আরডুইনো ব্যবহার করে ফেস ট্র্যাকিং !!!: 7 টি ধাপ
আরডুইনো ব্যবহার করে ফেস ট্র্যাকিং !!!: 7 টি ধাপ

ভিডিও: আরডুইনো ব্যবহার করে ফেস ট্র্যাকিং !!!: 7 টি ধাপ

ভিডিও: আরডুইনো ব্যবহার করে ফেস ট্র্যাকিং !!!: 7 টি ধাপ
ভিডিও: Startup Strategy & Fundraising AMA Office Hours for Seed Startup Founders w/Angel Investor Scott Fox 2024, নভেম্বর
Anonim
আরডুইনো ব্যবহার করে ফেস ট্র্যাকিং !!!
আরডুইনো ব্যবহার করে ফেস ট্র্যাকিং !!!

পূর্ববর্তী নির্দেশনায় আমি ভাগ করেছিলাম কিভাবে আপনি 'পিসেরিয়াল' মডিউল ব্যবহার করে আরডুইনো এবং পাইথনের মধ্যে যোগাযোগ করতে পারেন এবং একটি LED নিয়ন্ত্রণ করতে পারেন। আপনি যদি এটি না দেখে থাকেন তবে এটি এখানে দেখুন: আরডুইনো এবং পাইথনের মধ্যে যোগাযোগ!

এবং কিভাবে আপনি একটি বস্তুর রঙ সনাক্ত করতে পারেন এবং স্ক্রিনে এটি ট্র্যাক করতে পারেন, তা এখানে দেখুন: OPENCV এবং PYTHON ব্যবহার করে রঙ সনাক্তকরণ।

এই নির্দেশনায় আমি আপনাকে দেখাব কিভাবে Arduino এবং Python ব্যবহার করে মুখগুলি ট্র্যাক করতে হয় এবং ক্যামেরাটিকে মুখ অনুসরণ করতে হয়। এটি কঠিন মনে হতে পারে কিন্তু আমার উপর বিশ্বাস করুন এটি নয়, আপনার প্রয়োজন শুধু আরডুইনো এবং পাইথনের প্রাথমিক জ্ঞান।

চল শুরু করা যাক…

ধাপ 1: আপনার যা প্রয়োজন হবে:

আপনার যা প্রয়োজন হবে
আপনার যা প্রয়োজন হবে
আপনার যা প্রয়োজন হবে
আপনার যা প্রয়োজন হবে
আপনার যা প্রয়োজন হবে
আপনার যা প্রয়োজন হবে

প্রয়োজনীয়তা সর্বনিম্ন। এখানে আমি আপনার প্রয়োজনীয় সবকিছু অংশ তালিকা প্রদান করেছি:

হার্ডওয়্যারের প্রয়োজনীয়তা:

  • আরডুইনো ইউএনও (অ্যামাজন ইউএস / আমাজন ইইউ)
  • ওয়েব ক্যাম (অ্যামাজন ইউএস / আমাজন ইইউ)
  • Servos x 2 (Amazon US / Amazon EU)
  • ব্রেডবোর্ড (অ্যামাজন ইউএস / আমাজন ইইউ)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

সফটওয়্যারের প্রয়োজনীয়তা:

  1. পাইথন 2.7 (ইনস্টল করা উচিত, লিনাক্স ওএস সাধারণত এটি আগে থেকেই ইনস্টল করা থাকে)
  2. ওপেনসিভি (আপনি এটি আলাদাভাবে ডাউনলোড করতে পারেন বা 'পিপ ইনস্টল' ব্যবহার করে আরও ব্যাখ্যা করতে পারেন)
  3. pyserial (পিপ দিয়ে ইনস্টল করা যায়)
  4. অসাড়
  5. হারকাসকেড।

প্রতিটি জিনিস একত্রিত হওয়ার পরে আমরা ইনস্টলেশন ধাপে যেতে পারি …

পদক্ষেপ 2: পাইথন পরিবেশ স্থাপন করা:

পাইথন পরিবেশ স্থাপন করা হচ্ছে
পাইথন পরিবেশ স্থাপন করা হচ্ছে
পাইথন পরিবেশ স্থাপন করা হচ্ছে
পাইথন পরিবেশ স্থাপন করা হচ্ছে
পাইথন পরিবেশ স্থাপন করা হচ্ছে
পাইথন পরিবেশ স্থাপন করা হচ্ছে

পাইথন ইনস্টল করা হচ্ছে:

তাই প্রথমে আমাদের পাইথন 2.7 আপ এবং চলমান প্রয়োজন। এটি করার জন্য প্রথমে পাইথন 2.7.14 ডাউনলোড এবং ইনস্টল করুন। এটি সঠিকভাবে ইনস্টল করা আছে কিনা তা পরীক্ষা করতে গোটো: উইন্ডোজ অনুসন্ধান >> টাইপ করুন "আইডিএল" >> এন্টার টিপুন। একটি পাইথন শেল পপ আপ করা উচিত।

অথবা

সার্চে টাইপ করুন 'সিএমডি' এবং কমান্ড প্রম্পট খুলতে এন্টার চাপুন। সিএমডি টাইপ >> পাইথন এবং এন্টার চাপুন, পাইথন ইন্টারফেস প্রদর্শন করা উচিত।

যদি আপনি সিএমডিতে একটি ত্রুটি দেখতে পান, তাহলে আতঙ্কিত হবেন না আপনাকে সম্ভবত পরিবেশের পরিবর্তনশীল সেট করতে হবে। এনভায়রনমেন্ট ভেরিয়েবল সেট করতে আপনি এই টিউটোরিয়ালটি অনুসরণ করতে পারেন।

পাইথনে 'pyserial', 'OpenCV' এবং 'numpy' ইনস্টল করা হচ্ছে:

এই মডিউলগুলি ইনস্টল করার জন্য আমরা পিপ ইনস্টল ব্যবহার করব, প্রথমে সিএমডি খুলুন এবং নিম্নলিখিত কোডগুলি টাইপ করুন:-

পিপ ইনস্টল সিরিয়াল

pip install opencv-python> pip install numpy

এই কমান্ডগুলি প্রয়োজনীয় মডিউলগুলি ইনস্টল করবে। এখন আমরা কোডিং অংশে যেতে পারি …

ধাপ 3: পাইথন স্ক্রিপ্ট:

পাইথন স্ক্রিপ্ট
পাইথন স্ক্রিপ্ট

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

এখন নোটপ্যাড খুলুন এবং নীচে দেওয়া স্ক্রিপ্টটি লিখুন, এটিকে 'face.py' হিসাবে হারকাসকেডের মতো ফোল্ডারে সংরক্ষণ করুন। (নীচের ফাইলটি আমি যে কোডটি দিয়েছি তা আপনি ডাউনলোড করতে পারেন):

#সমস্ত প্রয়োজনীয় মডিউল আমদানি করুন

nmp আমদানি সিরিয়াল আমদানি সময় হিসাবে আমদানি করুন sys আমদানি cv2 #arduino এর জন্য যোগাযোগের পথ সেট করুন ('COM5' এর জায়গায় আপনার arduino সংযুক্ত পোর্টটি রাখুন) arduino = serial. Serial ('COM5', 9600) time.sleep (2) প্রিন্ট ("arduino- এর সাথে সংযুক্ত …") #মুখ সনাক্তকরণের জন্য হারকাসকেড আমদানি করা face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #ওয়েবক্যাম থেকে ভিডিও স্ট্রিম ক্যাপচার করতে। cap = cv2. VideoCapture (0) #ক্যাপচার করা ছবিটি পড়ুন, ধূসর ছবিতে রূপান্তর করুন এবং 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (img, (250, 250), 5, (255, 255, 255), -1) ধূসর = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (ধূসর, 1.3) # মুখটি সনাক্ত করুন এবং এর চারপাশে একটি আয়তক্ষেত্র তৈরি করুন। মুখে (x, y, w, h) জন্য: cv2.rectangle (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = ধূসর [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} print (arr) print ('X: '+str (x)) print (' Y: '+str (y)) print (' x+w: '+str (x+w)) print (' y+h: '+str (y+h))) # রই কেন্দ্র (আয়তক্ষেত্র) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # arduino প্রিন্টে ডেটা পাঠানো ("আয়তক্ষেত্রের কেন্দ্র হল:", কেন্দ্র) ডেটা = "X {0: d} Y {1: d} Z".ফরম্যাট (xx, yy) প্রিন্ট ("আউটপুট = '" +ডেটা + "'") arduino.write (ডেটা) #স্ট্রিম প্রদর্শন করুন। cv2.imshow ('img', img) #হিট 'Esc' এক্সিকিউশন বন্ধ করতে k = cv2.waitKey (30) & 0xff যদি k == 27: break

একবার এটি হয়ে গেলে, আরডুইনো এর জন্য কোড লিখতে এগিয়ে যান …

ধাপ 4: Arduino কোড:

Arduino কোড
Arduino কোড

পাইথন স্ক্রিপ্ট প্রস্তুত হওয়ার পর সার্ভো নিয়ন্ত্রণের জন্য আমাদের আরডুইনো স্কেচ দরকার। নীচের কোডটি পড়ুন, এটি Arduino IDE এ পেস্ট করুন এবং face.py এবং haarcascade- এর মতো একই ফোল্ডারে 'servo.ino' হিসাবে সংরক্ষণ করুন। কোড আপলোড করুন এবং সংযোগগুলি তৈরি করতে পরবর্তী ধাপে যান।

(ডাউনলোডযোগ্য ফাইল নিচে দেওয়া আছে)

#অন্তর্ভুক্ত

Servo servoVer; // উল্লম্ব Servo Servo servoHor; // অনুভূমিক Servo int x; int y; int prevX; int prevY; অকার্যকর সেটআপ () {Serial.begin (9600); servoVer.attach (5); // 5 servoHor.attach (6) পিন করার জন্য উল্লম্ব Servo সংযুক্ত করুন; // অনুভূমিক Servo পিন 6 servoVer.write (90) সংযুক্ত করুন; servoHor.write (90); } অকার্যকর পস () {যদি (prevX! = x || prevY! = y) {int servoX = মানচিত্র (x, 600, 0, 70, 179); int servoY = মানচিত্র (y, 450, 0, 179, 95); servoX = মিনিট (servoX, 179); servoX = সর্বোচ্চ (servoX, 70); servoY = মিনিট (servoY, 179); servoY = সর্বোচ্চ (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); যদি (Serial.read () == 'Y') {y = Serial.parseInt (); পস (); }} while (Serial.available ()> 0) {Serial.read (); }}}

ধাপ 5: প্যান-টিল্ট মেকানিজম:-

প্যান-টিল্ট মেকানিজম
প্যান-টিল্ট মেকানিজম
প্যান-টিল্ট মেকানিজম
প্যান-টিল্ট মেকানিজম

আমি প্যান-টিল্টের জন্য একটি সহজলভ্য কিট ব্যবহার করেছি। আপনি চাইলে কাঠ/প্লাস্টিক বা এমনকি থ্রিডি প্রিন্ট ব্যবহার করে নিজেই তৈরি করতে পারেন।

আমি যেটি ব্যবহার করেছি তা বেশ সস্তা, এবং একত্রিত করা খুব সহজ। তবুও যদি আপনি এটি কীভাবে করবেন তার নির্দেশাবলী চান, আপনি এটি এখানে খুঁজে পেতে পারেন।

ধাপ 6: সংযোগ তৈরি করা:

সংযোগ তৈরি করা
সংযোগ তৈরি করা
সংযোগ তৈরি করা
সংযোগ তৈরি করা

সার্কিটটি বেশ সহজ। আরডুইনোতে কেবল দুটি সার্ভস সংযুক্ত করুন।

  1. পিন 5 থেকে উল্লম্ব
  2. অনুভূমিকভাবে পিন 6
  3. +5V পাওয়ার
  4. GND থেকে GND

রেফারেন্সের জন্য সার্কিট ডায়াগ্রাম চেক করুন।

ধাপ 7: পরীক্ষা:

  • সবকিছু শেষ হয়ে গেলে শেষ কাজ হল পরীক্ষা করা যদি এটি কাজ করে। প্রথমে পরীক্ষা করার জন্য নিশ্চিত করুন যে সার্ভিসগুলি সঠিকভাবে arduino এর সাথে সংযুক্ত এবং স্কেচ আপলোড করা হয়েছে।
  • স্কেচ আপলোড করার পরে আইডিই বন্ধ করতে ভুলবেন না যাতে পোর্টটি পাইথনের সাথে সংযোগের জন্য মুক্ত থাকে।
  • এখন Python IDLE দিয়ে 'face.py' খুলুন এবং কোডটি চালানোর জন্য 'F5' টিপুন। আরডুইনোতে সংযোগ করতে কয়েক সেকেন্ড সময় লাগবে এবং তারপরে আপনি ওয়েব ক্যাম স্ট্রিমিং করে একটি উইন্ডো দেখতে সক্ষম হবেন। এখন কোডটি আপনার মুখ সনাক্ত করবে এবং সার্ভোসগুলি এটিকে ট্র্যাক করবে।
  • আপনি বস্তু সরানোর সময় Servo সরানো উচিত। এখন শুধু সার্ভিসের সাথে ক্যামেরা সংযুক্ত করুন যাতে এটি সার্ভোসের সাথে চলবে।

ধন্যবাদ.

প্রস্তাবিত: