পাইথনে ইমেজ প্রসেসিংয়ের জন্য অনেক লাইব্রেরি রয়েছে, যেমন:
- OpenCV — রিয়েল-টাইম কম্পিউটার ভিশনের জন্য প্রধানত ব্যবহৃত, ২D ও ৩D ফিচার টুলকিট, ফেসিয়াল ও জেসচার রিকগনিশন, হিউম্যান-কম্পিউটার ইন্টারঅ্যাকশন, মোবাইল রোবটিক্স, অবজেক্ট আইডেন্টিফিকেশন ইত্যাদিতে ব্যবহৃত।
- Numpy ও Scipy — ইমেজ ম্যানিপুলেশন ও প্রসেসিংয়ের জন্য।
- Scikit-image — ইমেজ প্রসেসিংয়ের অনেক অ্যালগরিদম প্রদান করে।
- Python Imaging Library (PIL) — থাম্বনেইল বানানো, রিসাইজ, রোটেশন, ফাইল ফরম্যাট কনভারশন ইত্যাদি বেসিক অপারেশনের জন্য।
এই সেকশনে পাইথনে ইমেজ প্রসেসিংয়ের কিছু বেসিক দেখাব।
প্রয়োজনীয় লাইব্রেরি ইনস্টল
প্রথমে প্রয়োজনীয় লাইব্রেরি (OpenCV, Pillow ইত্যাদি) ইন্সটল করুন। পিপ দিয়ে ইন্সটল করুন:
$pip install pillow
ইমেজ: Open() এবং show()
প্রথমে ফাইল/ইমেজ খুলুন এবং দেখান। দেখানোর সময় রোটেটও করা যায়:
# প্রয়োজনীয় লাইব্রেরি ইম্পোর্ট
from PIL import Image
# ইমেজ খুলুন
im = Image.open("TajMahal.jpg")
# ইমেজ রোটেট করে দেখান
im.rotate(45).show()
আউটপুট

im ভেরিয়েবলটি একটি Pillow অবজেক্ট। খোলা ইমেজের তথ্য বের করা যায়:
>>> im
>>> im.size
(1000, 667)
>>> im.format
'JPEG'
ইমেজ কনভার্ট এবং Save()
ইমেজের ফরম্যাট পরিবর্তন করা যায়:
>>> im.save('TajMahal.png')
এখন একই ইমেজ দুটি ফরম্যাটে (JPEG ও PNG) ফোল্ডারে থাকবে।
Resize — thumbnail()
Pillow-এর thumbnail() মেথড দিয়ে ইমেজের আকার পরিবর্তন:
>>> im.thumbnail((300, 300))
>>> im.show()

গ্রে-স্কেলে রূপান্তর — convert()
রঙিন ইমেজ থেকে গ্রে-স্কেল ইমেজ বানান:
>>> TajMahal_gray = Image.open('TajMahal.jpg').convert('L')
>>> TajMahal_gray.show()
এখানে "L" মানে 'luminous'।

উপরের উদাহরণ PIL লাইব্রেরির। আরও পাওয়ারফুল লাইব্রেরি যেন OpenCV, Matplotlib, Numpy ব্যবহার করে ইমেজ প্রসেসিং করা যায়। নিচে কিছু উদাহরণ:
OpenCV দিয়ে গ্রে-স্কেল ইমেজ দেখানো
import cv2
import numpy as np
from matplotlib import pyplot as plt
im = cv2.imread('TajMahal.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('image', im)
cv2.waitKey(0)
cv2.destroyAllWindows()

Matplotlib দিয়ে টিক/লাইন সহ গ্রে-স্কেল ইমেজ
import cv2
import numpy as np
from matplotlib import pyplot as plt
im = cv2.imread('TajMahal.jpg', cv2.IMREAD_GRAYSCALE)
plt.imshow(im, cmap='gray', interpolation='bicubic')
# X ও Y অক্ষের টিক মান লুকান
plt.xticks([]), plt.yticks([])
# লাইন আঁকুন
plt.plot([200, 300, 400], [100, 200, 300], 'c', linewidth=5)
plt.show()
