সুচিপত্র:

ওপেনসিভি ব্যবহার করে পাইথনে রঙ সনাক্তকরণ: 8 টি ধাপ
ওপেনসিভি ব্যবহার করে পাইথনে রঙ সনাক্তকরণ: 8 টি ধাপ

ভিডিও: ওপেনসিভি ব্যবহার করে পাইথনে রঙ সনাক্তকরণ: 8 টি ধাপ

ভিডিও: ওপেনসিভি ব্যবহার করে পাইথনে রঙ সনাক্তকরণ: 8 টি ধাপ
ভিডিও: গরুটা সাথে কি হয়েছে #shorts #wildlifebd 2024, নভেম্বর
Anonim
Image
Image

হ্যালো! এই নির্দেশনাটি কীভাবে ওপেনসিভি লাইব্রেরি ব্যবহার করে পাইথনে একটি চিত্র থেকে একটি নির্দিষ্ট রঙ বের করতে হয় তা নির্দেশ করতে ব্যবহৃত হয়। যদি আপনার এই কৌশলটি নতুন হয় তবে চিন্তা করবেন না, এই গাইডের শেষে আপনি আপনার নিজের রঙ সনাক্তকরণ প্রোগ্রামটি করতে সক্ষম হবেন।

নিম্নলিখিত ফাংশনগুলি বা আমরা কৌশলগুলি বলতে পারি যা আপনি শিখবেন, 1. কিভাবে একটি ছবি পড়তে হয়

2. কিভাবে ট্র্যাক বার তৈরি করতে হয়

3. কিভাবে ট্র্যাক বার ব্যবহার করে হিউ, স্যাচুরেশন এবং একটি ছবির মান মান সামঞ্জস্য করতে হয়

4. এবং তারপর আপনার চূড়ান্ত আউটপুট হবে

আমি নীচের সংযুক্ত করা আউটপুট এর ভিডিও দেখতে পারেন।

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

সরবরাহ

  • পাইথন
  • ওপেনসিভি লাইব্রেরি
  • অস্পষ্ট লাইব্রেরি

ধাপ 1: লাইব্রেরি আমদানি করা

লাইব্রেরি আমদানি করা
লাইব্রেরি আমদানি করা

ছবিটি হলুদ ফেরারির মতো দেখানো হয়েছে এবং আমরা সেই ছবি থেকে শুধুমাত্র হলুদ রঙ বের করার প্রোগ্রাম করব

প্রথম ধাপ আমাদের লাইব্রেরি আমদানি করা হবে

1. OpenCV লাইব্রেরী সহ। এটিকে পাইথনে cv2 বলা হয়

2. np হিসাবে numpy লাইব্রেরি অন্তর্ভুক্ত। "হিসাবে" আমাদের np হিসাবে অস্পষ্ট করার অনুমতি দেয় তাই বারবার numpy লেখার দরকার নেই

ধাপ 2: ট্র্যাক বার তৈরি করা

ট্র্যাক বার তৈরি করা
ট্র্যাক বার তৈরি করা

একটি ছবিতে হিউ, স্যাচুরেশন এবং ভ্যালুর মান সমন্বয় করার জন্য ট্র্যাক বার তৈরি করা হয়।

cv2.namedWindow ("TrackBars") কোডের এই লাইনটি একটি নতুন আউটপুট উইন্ডো তৈরিতে ব্যবহার করা হয় এবং উইন্ডোর নাম TrackBars হিসেবে দেওয়া হয় (আপনি যে কোন নাম দিতে পারেন)

cv2.resizeWindow ("TrackBars", 600, 250) এই ফাংশনটি একটি উইন্ডোর আকার পরিবর্তন করতে ব্যবহৃত হয়। "TrackBars" হল কোন উইন্ডোর জন্য আপনি আকার পরিবর্তন করতে চান যেহেতু আমি TrackBars উইন্ডোর আকার পরিবর্তন করতে চেয়েছিলাম আমি সেই নামটি লিখেছি। দুটি পূর্ণসংখ্যা দ্বারা অনুসরণ করা হয়। এই দুটি পূর্ণসংখ্যা হল প্রস্থ এবং উচ্চতা। আপনি আকার পরিবর্তন করতে সেই দুটি সংখ্যার সাথে খেলতে পারেন

ধাপ 3: হিউ, স্যাচুরেশন এবং ভ্যালুর জন্য ট্র্যাকবার তৈরি করা

হিউ, স্যাচুরেশন এবং ভ্যালুর জন্য ট্র্যাকবার তৈরি করা
হিউ, স্যাচুরেশন এবং ভ্যালুর জন্য ট্র্যাকবার তৈরি করা
হিউ, স্যাচুরেশন এবং ভ্যালুর জন্য ট্র্যাকবার তৈরি করা
হিউ, স্যাচুরেশন এবং ভ্যালুর জন্য ট্র্যাকবার তৈরি করা

এখন আমরা হিউ, স্যাচুরেশন এবং ভ্যালুর জন্য মোট 6 টি ট্র্যাকবার তৈরি করব। প্রত্যেকের দুটি হবে অর্থাৎ সর্বনিম্ন 1 এবং সর্বোচ্চ 1। আমরা openCV এর createTrackbar ফাংশন ব্যবহার করব। প্রথমে আমরা এই ফাংশনের সিনট্যাক্স দেখব।

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE")। এটি বিভ্রান্তিকর হতে পারে তবে চিন্তা করবেন না আমরা প্রতিটি ধাপ অতিক্রম করব। একটি বিষয় মনে রাখবেন যে ওপেনসিভিতে রঙের মান 179, সম্পৃক্তি 255 এবং মান 255

1. হিউ মিনি জন্য TrackBar তৈরি করা:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, খালি)

এই হিউ মিনিতে ট্র্যাকবারের নাম, ট্র্যাকবার্স হল প্রধান উইন্ডো, 0 হল সেই অবস্থান যার উপর আমাদের স্লাইডার থাকবে এবং 179 এর পরিসীমা মানে সিল্ডার 0-179 থেকে সরবে

2. সর্বোচ্চ রঙের জন্য TrackBar তৈরি করা:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, খালি)

এই হিউ ম্যাক্সে ট্র্যাকবারের নাম, ট্র্যাকবার্স হল প্রধান উইন্ডো, 179 হল সেই অবস্থান যার উপর আমাদের স্লাইডার থাকবে এবং 179 হল সর্বোচ্চ পরিসীমা মানে সিল্ডার 179-0 থেকে সরবে

3. একইভাবে ছবিতে দেখানো হিসাবে sat min, sat max, val min এবং val max এর ধাপগুলি পুনরাবৃত্তি করুন

সাদা পটভূমি সহ চিত্রটি আউটপুট চিত্র। এই ভাবে আপনার ট্র্যাক বার দেখতে হবে

ধাপ 4: চিত্রটি কীভাবে পড়বেন এবং আকার পরিবর্তন করবেন

কিভাবে ইমেজ পড়বেন এবং রিসাইজ করবেন
কিভাবে ইমেজ পড়বেন এবং রিসাইজ করবেন

cv2.imread () আপনাকে ছবিটি পড়তে দেয়। একটি গুরুত্বপূর্ণ চিন্তা আপনাকে মনে রাখতে হবে যে আপনার ছবির অবস্থান একই ফোল্ডারে থাকতে হবে যেখানে প্রোগ্রামটি সংরক্ষণ করা হয়েছে। আমরা যখন লুপ রাখব কারণ ছবিটি পড়া না হওয়া পর্যন্ত এটি চলতে হবে অথবা শর্তটি সত্য না হওয়া পর্যন্ত আমরা বলতে পারি

img = cv2.imread ("ferrari.jpg")

  • এর মধ্যে আমি একটি পরিবর্তনশীল নাম "img" তৈরি করেছি যাতে আমি ছবিটি সংরক্ষণ করছি
  • Cv2.imread এর ভিতরে ডাবল কোটের ভিতরে ইমেজ এর এক্সটেনশন দিয়ে নাম লিখুন

একটি চিত্রের আকার পরিবর্তন করতে আমরা cv2.resize ফাংশন ব্যবহার করব। এই অংশটি alচ্ছিক, যদি আপনি আকার পরিবর্তন করতে চান তবে আপনি এই ফাংশনটি ব্যবহার করতে পারেন

Cv2.resize এর ভিতরে প্রথমে ভেরিয়েবলের নাম লিখুন যাতে ছবিটি সংরক্ষিত থাকে এবং তারপর এর প্রস্থ এবং উচ্চতা।

ধাপ 5: একটি ছবিতে এটি প্রয়োগ করার জন্য ট্র্যাক বার মানগুলি পড়া

একটি ছবিতে এটি প্রয়োগ করার জন্য ট্র্যাক বারের মান পড়া
একটি ছবিতে এটি প্রয়োগ করার জন্য ট্র্যাক বারের মান পড়া
একটি ছবিতে এটি প্রয়োগ করার জন্য ট্র্যাক বারের মান পড়া
একটি ছবিতে এটি প্রয়োগ করার জন্য ট্র্যাক বারের মান পড়া

ঠিক আছে তাই এখন আমরা ট্র্যাকবার বারের মান পড়তে যাচ্ছি যাতে আমরা আমাদের ছবিতে এটি প্রয়োগ করতে পারি। আমরা cv2.getTrackbarPos () ফাংশন ব্যবহার করে মান পাব।

সেই অংশ দিয়ে শুরু করা যাক…

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

উপরের বিবৃতিতে আমি একটি পরিবর্তনশীল নাম h_min তৈরি করছি যেখানে আমি হিউ মিনি এর মান সংরক্ষণ করব। সুতরাং cv2.getTrackbarPos এর ভিতরে ১ ম যুক্তি হবে "হিউ মিন" কারণ আমি হিউ মিনি এর মান চাই (বানানটি ঠিক যেমন ট্র্যাকবার ফাংশন ঠিক তেমনি হতে হবে) এবং ২ য় যুক্তিটি ট্র্যাকবার উইন্ডোর নাম হবে যার সাথে এটি সম্পর্কিত।

  • উপরের ছবিতে দেখানো h_max এবং বাকি ফাংশনের জন্য একই প্রক্রিয়া পুনরাবৃত্তি করুন এবং তারপর print () ব্যবহার করে সমস্ত মান মুদ্রণ করুন
  • আউটপুট দ্বিতীয় ছবিতে দেখানো হয়েছে। এটি h_min, h_max, s_min, s_max, v_min, s_max এর মান প্রিন্ট করছে

ধাপ 6: চিত্র প্রদর্শন এবং উচ্চ এবং নিম্ন সীমা নির্ধারণ

চিত্র প্রদর্শন এবং উচ্চ এবং নিম্ন সীমা নির্ধারণ
চিত্র প্রদর্শন এবং উচ্চ এবং নিম্ন সীমা নির্ধারণ

এখন আমাদের কাছে হলু, স্যাচুরেশন এবং ভ্যালুর ন্যূনতম এবং সর্বোচ্চ মান আছে আমরা এই মানটি ইমেজ ফিল্টার করার জন্য ব্যবহার করব যাতে আমরা একটি ছবির বিশেষ রঙ আউটপুট করতে পারি।

আমরা cv2.inRange ফাংশন ব্যবহার করে এর জন্য একটি মাস্ক তৈরি করব। এবং তার আগে আমরা বর্ণ, স্যাচুরেশন এবং ভ্যালুর উপরের এবং নিচের সীমা নির্ধারণ করব

সুতরাং একটি পরিবর্তনশীল নাম "নিম্ন" তৈরি করুন এবং numpy অ্যারে ফাংশন ব্যবহার করে নিম্নরূপ 3 এর জন্য min এর পরিসর নির্ধারণ করুন

নিম্ন = np.array ([h_min, s_min, v_min])

উপরের জন্য একই ধাপ পুনরাবৃত্তি করুন

উপরের = np.array ([h_max, s_max, v_max])

এখন আমরা অনুসরণ হিসাবে একটি মাস্ক তৈরি করব

মুখোশ = cv2.in রেঞ্জ (আকার পরিবর্তন করুন, নিম্ন, উপরের) cv2.in এর ভিতরে প্রথম যুক্তিটি পরিবর্তনশীল হবে যেখানে আমার চূড়ান্ত ছবিটি সংরক্ষণ করা হবে, দ্বিতীয় যুক্তিটি নিম্ন সীমা এবং তৃতীয় যুক্তি হবে উচ্চ সীমা।

এখন আমরা প্রধান চিত্র এবং মুখোশ প্রদর্শন করতে যাচ্ছি। প্রদর্শন করতে আমরা cv2.imshow () ফাংশন ব্যবহার করব

cv2.imshow ("img", আকার পরিবর্তন করুন) এটি প্রধান চিত্র প্রদর্শন করার জন্য। ১ ম যুক্তি হল জানালার নাম আপনি চাইলে যেকোন নাম দিতে পারেন এবং ২ য় যুক্তি পরিবর্তনশীল যেখানে আমার প্রধান ছবি সংরক্ষিত আছে যা আপনি প্রদর্শন করতে চান।

একইভাবে মাস্কের জন্য ধাপগুলি পুনরাবৃত্তি করুন

cv2.imshow ("আউটপুট", মাস্ক)

ধাপ 7: এখন চূড়ান্ত ধাপ

এখন চূড়ান্ত ধাপ
এখন চূড়ান্ত ধাপ

এই চূড়ান্ত ধাপে আমরা গাড়ির রং এবং ডিসপ্লে বের করব।

আমি একটি পরিবর্তনশীল নাম ফলাফল তৈরি করেছি। আবার আপনি যে কোন নাম দিতে পারেন। সুতরাং আমরা cv2.bitwise_and () ফাংশন ব্যবহার করব যেখানে আমরা একসাথে ছবিতে যোগ করব এবং একটি নতুন চিত্র তৈরি করব। এবং উভয় ইমেজের পিক্সেল যেখানেই থাকবে সেখানে এটিকে হ্যাঁ বা "1" হিসাবে গ্রহণ করবে।

ফলাফল = cv2.bitwise_and (রিসাইজ, রিসাইজ, মাস্ক = মাস্ক)

  • এতে ১ ম যুক্তি হবে আমাদের ভাবমূর্তি
  • ২ য় যুক্তি আমাদের মূল চিত্রও হবে কিন্তু তার পরে মুখোশ প্রয়োগ করা হবে যা আমরা আগে তৈরি করেছি
  • এবং অবশেষে শুধু imshow ফাংশন ব্যবহার করে ফলাফল প্রদর্শন করুন

এই শেষ ধাপটি শুধু কপি পেস্ট করুন এটি একটি বিলম্ব এবং আপনি কীবোর্ডে "a" টিপে আউটপুট উইন্ডো থেকে বেরিয়ে আসতে পারেন

ধাপ 8: চূড়ান্ত আউটপুট

প্রস্তাবিত: