সুচিপত্র:

OpenCV মৌলিক প্রকল্প: 5 টি ধাপ
OpenCV মৌলিক প্রকল্প: 5 টি ধাপ

ভিডিও: OpenCV মৌলিক প্রকল্প: 5 টি ধাপ

ভিডিও: OpenCV মৌলিক প্রকল্প: 5 টি ধাপ
ভিডিও: CS50 2014 - Week 7, continued 2024, নভেম্বর
Anonim
OpenCV বেসিক প্রজেক্ট
OpenCV বেসিক প্রজেক্ট

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

সরবরাহ

  • কম্পিউটার চলমান পাইথন
  • সিভি লাইব্রেরি, নম্পি লাইব্রেরি, টিকিন্টার লাইব্রেরি, সিএস লাইব্রেরি খুলুন
  • কম্পিউটারে সংযোগ করার জন্য ক্যামেরা (যদি কম্পিউটারে ইতিমধ্যেই একটি না থাকে)
  • প্রোগ্রামের পাইথন ফাইল (এই নির্দেশে অন্তর্ভুক্ত)
  • haarcascade xml ফাইল (এই নির্দেশের মধ্যে অন্তর্ভুক্ত)

ধাপ 1: FaceDetect ফাংশন

FaceDetect ফাংশন
FaceDetect ফাংশন
FaceDetect ফাংশন
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: ভিডিও এজেস ফাংশন

ভিডিও এজ ফাংশন
ভিডিও এজ ফাংশন
VideoEdges ফাংশন
VideoEdges ফাংশন

এই ফাংশনটি আমাদের লাইভ ভিডিও স্ট্রিম ফিরিয়ে দেয়, কিন্তু সনাক্তযোগ্য প্রান্তগুলি সাদা রেন্ডার করা হয় যখন অন্য সবকিছু কালো হয়ে যায়। এই ফাংশনটিকে অন্যান্য ফাংশন থেকে আলাদা করে আমাদের RBG ফর্ম্যাট থেকে HSV- এ রূপান্তর করা, যা রঙ, স্যাচুরেশন এবং বৈচিত্র্য- একটি ভিডিও থেকে আলো এবং রঙ প্রক্রিয়াকরণের একটি ভিন্ন পদ্ধতি। এই পদ্ধতির সাহায্যে, আমরা একটি ফিল্টার (red_low থেকে red_high) প্রয়োগ করে ভিডিওর রূপরেখাগুলি সহজেই আলাদা করতে পারি।

ক্যানি এজ ডিটেকশন একটি ছবিতে প্রান্ত সনাক্ত করতে ব্যবহৃত হয়। এটি একটি ধূসর স্কেল চিত্রকে ইনপুট হিসাবে গ্রহণ করে এবং এটি একটি মাল্টিস্টেজ অ্যালগরিদম ব্যবহার করে।

ধাপ 4: ভিডিও ব্লার ফাংশন

ভিডিও ব্লার ফাংশন
ভিডিও ব্লার ফাংশন
ভিডিও ব্লার ফাংশন
ভিডিও ব্লার ফাংশন

এই ফাংশনটি আমাদের ভিডিও স্ট্রীমে অস্পষ্ট প্রভাব যোগ করতে ব্যবহৃত হয়। ফাংশন সহজ আমাদের ফ্রেমে GaussianBlur cv2 ফাংশন কল করে। গাউসিয়ান ব্লুর ফাংশন সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে:

opencv-python-tutroals.readthedocs.io/en/l…

ধাপ 5: উন্নতি

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

আমরা অন্যান্য মুখ সনাক্তকরণ ফাংশনগুলিও ব্যবহার করতে পারি যা কেবল প্রত্যাবর্তন (x, y) স্থানাঙ্ক ছাড়া আরও কার্যকারিতা সহ বস্তু তৈরি করতে পারে। সম্ভবত মুখ স্মরণ করার ক্ষমতা সহ একটি মুখের স্বীকৃতি প্রোগ্রাম বাস্তবায়ন করা খুব কঠিন হবে না।

ব্লার ফাংশনটি ব্যবহারকারী দ্বারা স্বজ্ঞাত নিয়ন্ত্রণের মাধ্যমে আরও কাস্টমাইজেশন করা যেতে পারে। উদাহরণস্বরূপ, ব্যবহারকারী ঝাপসা প্রভাবের তীব্রতা সামঞ্জস্য করতে পারেন বা অস্পষ্ট করার জন্য ফ্রেমের মধ্যে একটি নির্দিষ্ট এলাকা নির্বাচন করতে পারেন।

প্রস্তাবিত: