সুচিপত্র:
- সরবরাহ
- ধাপ 1: FaceDetect ফাংশন
- ধাপ 2: ব্যাকগ্রাউন্ড রিমুভ ফাংশন
- ধাপ 3: ভিডিও এজেস ফাংশন
- ধাপ 4: ভিডিও ব্লার ফাংশন
- ধাপ 5: উন্নতি
ভিডিও: OpenCV মৌলিক প্রকল্প: 5 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:58
এই প্রকল্পে, আমরা 4 টি সহজ প্রকল্পের মাধ্যমে একটি লাইভ ভিডিও স্ট্রীমের সাথে কিছু মৌলিক OpenCV কার্যকারিতা অন্বেষণ করি। এগুলি হল মুখের স্বীকৃতি, পটভূমি অপসারণ, প্রান্তের বিশেষ চাক্ষুষ রেন্ডারিং এবং লাইভ ভিডিও স্ট্রীমে অস্পষ্ট প্রভাব প্রয়োগ করা। এই প্রকল্পগুলি চেষ্টা করার জন্য আমার প্রধান উদ্দেশ্য ছিল ওপেনসিভি ইন্টারফেসের সাথে আমার পা ভিজা করা, যেহেতু আমি কম্পিউটার ভিশন ক্ষেত্রে আরও গভীরভাবে অনুসন্ধান করার পরিকল্পনা করছি
সরবরাহ
- কম্পিউটার চলমান পাইথন
- সিভি লাইব্রেরি, নম্পি লাইব্রেরি, টিকিন্টার লাইব্রেরি, সিএস লাইব্রেরি খুলুন
- কম্পিউটারে সংযোগ করার জন্য ক্যামেরা (যদি কম্পিউটারে ইতিমধ্যেই একটি না থাকে)
- প্রোগ্রামের পাইথন ফাইল (এই নির্দেশে অন্তর্ভুক্ত)
- haarcascade xml ফাইল (এই নির্দেশের মধ্যে অন্তর্ভুক্ত)
ধাপ 1: FaceDetect ফাংশন
এই ফাংশনটি আপনার ক্যামেরার ভিডিও দেখায় যে কোনও মুখে সবুজ স্কোয়ার এটি তুলে নেয়। কোডে, আমরা cv2. VideoCapture () ফাংশনটি ব্যবহার করি যে ভিডিওটি আমরা "ক্যাপচার" নামে একটি বস্তুতে ধারণ করছি। CAPTURE_INDEX হল আপনার কম্পিউটারের দ্বারা সেট করা একটি সংখ্যা যা কম্পিউটারের ভিডিও ইনপুট তালিকায় আপনার ক্যামেরার সূচকের সাথে মিলে যায়। যদি আপনার কম্পিউটারের সাথে বাইরের ক্যামেরা সংযুক্ত না থাকে, তাহলে 0 বা 1 কাজ করা উচিত।
Face_cascade অবজেক্টটি ক্যাসকেডক্লাসিফায়ার ফাংশন এবং OpenCV github এ পাওয়া "haarcascade_frontalface_default.xml" ফাইল ব্যবহার করে আরম্ভ করা হয়। আমরা এই বস্তুটি ব্যবহার করি "মুখ" তালিকায় সনাক্ত হওয়া মুখগুলিকে একটি এন্ট্রি ফোর-ওয়ে-টুপল হিসাবে মুখগুলি x সমন্বয়, y সমন্বয়, প্রস্থ এবং উচ্চতা ধরে রাখার জন্য। তারপরে আমরা একটি আয়তক্ষেত্র আঁকি যা পুরোপুরি মুখকে cv2.rectangle ফাংশন ব্যবহার করে ঘিরে ফেলে
এই ভিডিও থেকে, OpenCV ক্যাপচার.রেড () ব্যবহার করে আমাদের লুপে অনেক ছবি ক্যাপচার করে এবং ছবিটিকে "img" নামে একটি ফ্রেমে সংরক্ষণ করে। প্রতিটি ইমেজ তখন আমাদের ইচ্ছামতো ব্যাখ্যা এবং সংশোধন করা হয়। FaceDetect এর জন্য, আমরা cvtColor ফাংশন ব্যবহার করে ইমেজকে ধূসর করে তুলি যা প্রথম প্যারামিটারে দেওয়া যেকোনো ইমেজকে দ্বিতীয় প্যারামিটারে নির্দিষ্ট একটি ইমেজ কালারে রূপান্তর করে। দ্বিতীয় প্যারামিটারের জন্য গ্রহণযোগ্য মানগুলির তালিকা অনলাইনে পাওয়া যাবে। তারপর আমরা ছবিটি "মুখ সনাক্তকরণ" নামে একটি উইন্ডোতে প্রদর্শন করি যেটি ইমশো () ফাংশন ব্যবহার করে যা উইন্ডোর নাম এবং ছবির ফ্রেম প্রদর্শনের জন্য একটি স্ট্রিং নেয়।
অবশেষে আমরা cv2.waitKey () ফাংশন ব্যবহার করে ব্যবহারকারীর q কী প্রবেশ করার জন্য অপেক্ষা করি। 0xFF মাস্ক 64 বিট কম্পিউটারের কনভেনশন হিসেবে ব্যবহৃত হয়। ব্যবহারকারী ভিডিও স্ট্রিম শেষ করার পরে, ফেসডেক্ট ফাংশন ক্যাপচার অবজেক্টকে মুক্ত করে তারপর ওপেনসিভি ইন্টারফেসের অধীনে খোলা অন্য কোন উইন্ডো ধ্বংস করে। অন্যান্য সমস্ত ফাংশন একটি অনুরূপ নকশা কাঠামো অনুসরণ করে।
ধাপ 2: ব্যাকগ্রাউন্ড রিমুভ ফাংশন
এই ফাংশনটি আমাদের ভিডিওর ব্যাকগ্রাউন্ড অংশটি সরানোর চেষ্টা করে এবং শুধুমাত্র ফোরগ্রাউন্ড ইমেজ রেখে যায়। এটি কিছু ক্যামেরায় কাজ নাও করতে পারে, কারণ তারা একটি আলো সমন্বয় কার্যকারিতা ব্যবহার করে যা বিভিন্ন বস্তু/ ফোকি ফ্রেমে প্রবেশ করলে সক্রিয় হয়। যদি আপনার ব্যাকগ্রাউন্ড রিমুভ ফাংশন কাজ না করে, তাহলে বিরক্ত হবেন না- এটি কেবল আপনার ক্যামেরা হতে পারে!
এই ফাংশনটি ব্যবহার করতে, ক্যামেরা ফ্রেম থেকে দূরে সরে যান এবং ব্যাকগ্রাউন্ড ইমেজ ক্যাপচার করতে "d" কী টিপুন। যে পটভূমিতে আপনি ক্যাপচার করতে চান তাতে কোনও চলমান বস্তু নেই তা গুরুত্বপূর্ণ। তারপর, আমরা ক্যামেরা ফ্রেমে ফিরে যেতে পারি। যদি ফাংশন কাজ করে, ব্যবহারকারীর শুধুমাত্র ফাংশনের ভিডিও স্ট্রীমে নিজেদের দেখা উচিত। ফোরগ্রাউন্ড ইমেজে কোন গোলমাল/কালো ফোঁটা ক্যামেরার আলো সমন্বয়ের ফলে হতে পারে। অন্য পটভূমি ক্যাপচার করতে, পুনরায় আরম্ভ করতে "r" কী টিপুন, তারপরে আবার "d" টিপুন।
এই ফাংশনটির জন্য কিছু গুরুত্বপূর্ণ উপায় হল "পতাকা" বুলিয়ানের ব্যবহার যা ব্যবহারকারী d বোতাম টিপে তাত্ক্ষণিকভাবে উত্থাপিত হয়। এটি পটভূমি ক্যাপচার করে এবং আমাদের ফাংশন দ্বারা প্রবাহিত ভিডিও থেকে এটি অপসারণ করতে দেয়। আমাদের লক্ষ্য হল ব্যাকগ্রাউন্ড ইমেজটি রেফ_আইএমজিতে সংরক্ষণ করা যাতে আমরা এটিকে ফোরগ্রাউন্ড ইমেজ থেকে আলাদা করতে পারি, যা যেকোন চলন্ত বস্তুকে ক্যাপচার করে। আমরা ব্যাকগ্রাউন্ড ইমেজ থেকে সামনের গ্রাউন্ড ইমেজ বিয়োগ করতে cv2.subtract () ফাংশনটি ব্যবহার করি এবং এর বিপরীতে, তারপর দুটো ইমেজের মধ্যে যে কোন বিয়োগ পার্থক্য বাতিল করি। পটভূমি কালো হয়ে গেছে।
Fgmask এই দুটি ছবির মধ্যে পার্থক্য ব্যবহার করে তৈরি করা হয় এবং তারপর OpenCV cv2.bitwise_and () ফাংশন ব্যবহার করে ফাংশন ভিডিও স্ট্রীমে প্রয়োগ করা হয়।
ধাপ 3: ভিডিও এজেস ফাংশন
এই ফাংশনটি আমাদের লাইভ ভিডিও স্ট্রিম ফিরিয়ে দেয়, কিন্তু সনাক্তযোগ্য প্রান্তগুলি সাদা রেন্ডার করা হয় যখন অন্য সবকিছু কালো হয়ে যায়। এই ফাংশনটিকে অন্যান্য ফাংশন থেকে আলাদা করে আমাদের RBG ফর্ম্যাট থেকে HSV- এ রূপান্তর করা, যা রঙ, স্যাচুরেশন এবং বৈচিত্র্য- একটি ভিডিও থেকে আলো এবং রঙ প্রক্রিয়াকরণের একটি ভিন্ন পদ্ধতি। এই পদ্ধতির সাহায্যে, আমরা একটি ফিল্টার (red_low থেকে red_high) প্রয়োগ করে ভিডিওর রূপরেখাগুলি সহজেই আলাদা করতে পারি।
ক্যানি এজ ডিটেকশন একটি ছবিতে প্রান্ত সনাক্ত করতে ব্যবহৃত হয়। এটি একটি ধূসর স্কেল চিত্রকে ইনপুট হিসাবে গ্রহণ করে এবং এটি একটি মাল্টিস্টেজ অ্যালগরিদম ব্যবহার করে।
ধাপ 4: ভিডিও ব্লার ফাংশন
এই ফাংশনটি আমাদের ভিডিও স্ট্রীমে অস্পষ্ট প্রভাব যোগ করতে ব্যবহৃত হয়। ফাংশন সহজ আমাদের ফ্রেমে GaussianBlur cv2 ফাংশন কল করে। গাউসিয়ান ব্লুর ফাংশন সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে:
opencv-python-tutroals.readthedocs.io/en/l…
ধাপ 5: উন্নতি
এই প্রজেক্টের সবচেয়ে সংবেদনশীল ফাংশন হল ব্যাকগ্রাউন্ড রিমুভাল ফাংশন, কারণ এর জন্য এমন একটি ক্যামেরা ব্যবহার করা প্রয়োজন যেখানে আলো সমন্বয় কার্যকারিতা নেই। ওপেনসিভি লাইব্রেরির মধ্যে ফাংশনগুলির একটি ভাল সেট থাকতে পারে যা এই আলো সমন্বয়ের জন্য অ্যাকাউন্ট করতে পারে এবং সহজেই পটভূমি (সবুজ পর্দার মতো) সরিয়ে দেয়।
আমরা অন্যান্য মুখ সনাক্তকরণ ফাংশনগুলিও ব্যবহার করতে পারি যা কেবল প্রত্যাবর্তন (x, y) স্থানাঙ্ক ছাড়া আরও কার্যকারিতা সহ বস্তু তৈরি করতে পারে। সম্ভবত মুখ স্মরণ করার ক্ষমতা সহ একটি মুখের স্বীকৃতি প্রোগ্রাম বাস্তবায়ন করা খুব কঠিন হবে না।
ব্লার ফাংশনটি ব্যবহারকারী দ্বারা স্বজ্ঞাত নিয়ন্ত্রণের মাধ্যমে আরও কাস্টমাইজেশন করা যেতে পারে। উদাহরণস্বরূপ, ব্যবহারকারী ঝাপসা প্রভাবের তীব্রতা সামঞ্জস্য করতে পারেন বা অস্পষ্ট করার জন্য ফ্রেমের মধ্যে একটি নির্দিষ্ট এলাকা নির্বাচন করতে পারেন।
প্রস্তাবিত:
এলইডি স্ন্যাপার: সম্ভবত টেস্ট ইকুইপমেন্টের সবচেয়ে মৌলিক টুকরা যা আপনি তৈরি করতে পারেন: Ste টি ধাপ
LED স্ন্যাপার: সম্ভবত আপনি টেস্টিং সরঞ্জামগুলির সবচেয়ে মৌলিক টুকরা তৈরি করতে পারেন: আমাকে আপনার সাথে LED স্ন্যাপারের পরিচয় দিতে দিন। আপনার ইলেকট্রনিক্স প্রকল্পগুলিকে ডিবাগ করতে সাহায্য করার জন্য আপনি একটি সহজ, কিন্তু ব্যাপকভাবে উপযোগী টেস্ট যন্ত্রপাতি তৈরি করতে পারেন। এলইডি স্ন্যাপার একটি ওপেন সোর্স প্রিন্টেড সার্কিট বোর্ড যা আপনাকে সহজেই ডি যোগ করতে দেয়
NAIN 1.0 - Arduino ব্যবহার করে মৌলিক Humanoid রোবট: 6 ধাপ
NAIN 1.0 - Arduino ব্যবহার করে বেসিক হিউম্যানয়েড রোবট: Nain 1.0 এর মূলত 5 টি বিচ্ছিন্ন মডিউল থাকবে- 1) আর্ম - যা সার্ভসের মাধ্যমে নিয়ন্ত্রণ করা যায়। 2) চাকা - যা ডিসি মোটর দিয়ে নিয়ন্ত্রণ করা যায়। 3) লেগ - নাইন চলাচলের জন্য চাকা বা পায়ের মধ্যে স্যুইচ করতে পারবে। 4) মাথা এবং
মৌলিক পরামিতিগুলির স্বয়ংক্রিয় নিয়ন্ত্রণ সহ অ্যাকোয়ারিয়াম ডিজাইন: 4 টি ধাপ (ছবি সহ)
মৌলিক পরামিতিগুলির স্বয়ংক্রিয় নিয়ন্ত্রণ সহ অ্যাকোয়ারিয়াম ডিজাইন: ভূমিকা আজ, সামুদ্রিক অ্যাকোয়ারিয়ামের যত্ন প্রতিটি অ্যাকোয়ারিস্টের জন্য উপলব্ধ। অ্যাকোয়ারিয়াম অর্জনের সমস্যা কঠিন নয়। কিন্তু বাসিন্দাদের পূর্ণ জীবন সহায়তার জন্য, প্রযুক্তিগত ব্যর্থতা থেকে সুরক্ষা, সহজ এবং দ্রুত রক্ষণাবেক্ষণ এবং যত্ন
ওয়াল্টার মাইক্রোবট বট মৌলিক আন্দোলন: ২ Ste টি ধাপ
ওয়াল্টার মাইক্রোবট বট মৌলিক আন্দোলন: আমরা ওয়াল্টার মাইক্রো: বট প্রোগ্রামিং করব
নতুনদের জন্য 10 টি মৌলিক Arduino প্রকল্প! একটি একক বোর্ডের সাথে কমপক্ষে 15 টি প্রকল্প তৈরি করুন !: 6 টি ধাপ
নতুনদের জন্য 10 টি মৌলিক Arduino প্রকল্প! একটি একক বোর্ডের সাথে কমপক্ষে 15 টি প্রকল্প তৈরি করুন !: Arduino প্রকল্প & টিউটোরিয়াল বোর্ড; 10 টি মৌলিক Arduino প্রকল্প অন্তর্ভুক্ত। সমস্ত সোর্স কোড, গারবার ফাইল এবং আরও অনেক কিছু। এসএমডি নেই! সবার জন্য সহজ সোল্ডারিং। সহজ অপসারণযোগ্য এবং প্রতিস্থাপনযোগ্য উপাদান। আপনি একক বো দিয়ে কমপক্ষে 15 টি প্রকল্প তৈরি করতে পারেন