Some Basics – OpenCV

Python ব্যবহার করে আপনি যদি ইমেজ নিয়ে ঘাটাঘাটি করতে চান তাহলে OpenCV এর জুড়ি মেলা ভার। আপনি আরো অনেক লাইব্রেরি/API পাবেন কিন্তু OpenCV ব্যবহার করা সব থেকে সহজ। আপনার পিসিতে যদি OpenCV না ইনস্টল করা থাকে তাহলে নিচের কমান্ড রান করে ইনস্টল করে নিনঃ

pip install opencv-python

ব্যস। হয়ে গেল। প্রথমে দেখব OpenCV ব্যবহার করে কিভাবে একটি ইমেজ লোড করতে হয়। আমি কোডিংয়ের জন্য jupyter notebook ব্যবহার করব। আপনারা চাইলে করতে পারেন। জুপিটার নোটবুক সম্পর্কে আলাদা একটি পোস্ট আছে। এখান থেকে একবার চোখ বুলিয়ে নিতে পারেন।

আমরা প্রথমে দেখব কিভাবে OpenCV ব্যবহার করে ইমেজ লোড করা যায়।

উপরের চিত্রে দেখুন আমার প্রোজেক্ট ফোল্ডারে একটি ইমেজ রাখা আছে। আমরা এখন এটা লোড করব।

আমরা এখানে imread ফাংশন এর মাধ্যমে ইমেজটি img ভেরিয়েবলের মধ্যে লোড করেছি। এখন যদি ভেরিয়েবলটির শেপ দেখেন তাহলে দেখতে পাবেন এটা কিছুই না শুধুমাত্র (২৮৪,৪৯৯,৩) সাইজের 3D এরে। ডিমেনশন গুলো যথাক্রমে (height, width, depth)। height এবং width তো বুঝলাম, depthকি? depth হচ্ছে RGB ভ্যালু। আপনি যদি img এরেটাকে প্রিন্ট করেন তাহলে দেখতে পাবেন 0-255 এর মধ্যে সবগুলো ভ্যালু। ইমেজ বলতে এটাই বোঝায়। সংক্ষেপে RGB ভ্যালুর কালেকশন।

এখানে ছোট্ট একটা টুইস্ট আছে। OpenCV RGB ফরম্যাট ফলো করেনা। BGR ফরম্যাট ফলো করে। তারমানে এর ভ্যালুগুলো BGR অনুসারে সাজানো আছে। চলুন আমরা img এরে কে ইমেজ আকারে প্রিন্ট করে দেখি। নরমালি প্রিন্ট করলে আপনি শুধু নাম্বারগুলো দেখতে পাবেন। আমরা অন্য একটি লাইব্রেরি ব্যবহার করবো ইমেজ এরে কে ইমেজ হিসেবে দেখানোর জন্য। প্রথমে ইনস্টল করে নিন।

pip install matplotlib

এখন চলুন আমরা ইমেজটি দেখি।

আপনি যদি কম্পিউটারে ইমেজ ভিউয়ার আর এটার মধ্যে তুলনা করেন, তাহলে দেখতে পাবেন যে ইমেজটির কালার বদলে গেছে। এর কারণ হলো OpenCV এরে তে BGR অনুসারে সাজিয়ে রেখেছে, কিন্তু matplotlib ধরে নিয়েছে এটা RGB অনুসারে আছে। এজন্য আমাদের কে img কে BGR থেকে RGB তে পরিবর্তন করতে হবে। OpenCV তে এর উপায়ও দেয়া আছে।

এখন আউটপুট মিলিয়ে দেখুন।

চলুন এবার দেখি কিভাবে একটা ইমেজ array কে হার্ড ড্রাইভে সেভ করা যায়।

That’s it. কিন্তু সেইভ হওয়া ইমেজ ওপেন করলে দেখবেন আবার কালার বদলে গেছে। কারণ OpenCV ধরে নিয়েছে এটা BGR ফরম্যাটে আছে। কিন্তু আপনি এটা আগেই বদলে ফেলেছেন। আবার এটাকে RGB থেকে BGR এ পরিবর্তন করে সেইভ করে দেখুন।

img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite('file_path/filename.jpg', img)

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


Leave a Reply

Your email address will not be published. Required fields are marked *