অধ্যায়Phase 1 · ফাউন্ডেশন
1.7 10 মিনিট পড়া
ছবি পড়া ও দেখানো
imread, imshow, imwrite — basics।
🎬 গল্প দিয়ে শুরু
প্রতিটি Computer Vision pipeline-এর প্রথম তিনটি কাজ — ছবি পড়া, দেখানো, এবং সংরক্ষণ। শুনতে সহজ, কিন্তু এর মধ্যেই লুকিয়ে আছে BGR vs RGB, color flag, file format-এর গল্প। চলুন master করি।
ছবি পড়া — cv2.imread
python
read.py
import cv2
# Default — color (BGR), 3 channel
color = cv2.imread("dhaka.jpg")
# Grayscale (1 channel)
gray = cv2.imread("dhaka.jpg", cv2.IMREAD_GRAYSCALE)
# Unchanged — PNG-র alpha সহ
rgba = cv2.imread("logo.png", cv2.IMREAD_UNCHANGED)
print(color.shape if color is not None else "FAILED")
print(gray.shape, rgba.shape)লাইন-বাই-লাইন ব্যাখ্যা
cv2.imread(path)ফাইল না পেলে error দেয় না — None return করে। সবসময় check করুন।
IMREAD_GRAYSCALELoading-এর সময়ই grayscale-এ রূপান্তর — RAM বাঁচে।
IMREAD_UNCHANGEDAlpha (transparency) channel রাখার একমাত্র উপায়।
None-check ভুলবেন না
imread-এর সবচেয়ে common bug — wrong path দিলে কোনো warning নেই, পরের লাইনে গিয়ে crash করে। তাই সবসময়:python
img = cv2.imread(path)
if img is None:
raise FileNotFoundError(path)ছবি দেখানো — cv2.imshow
python
show.py (desktop / script)
import cv2
img = cv2.imread("dhaka.jpg")
cv2.imshow("My Image", img)
cv2.waitKey(0) # যেকোনো key চাপুন
cv2.destroyAllWindows()waitKey(0) মানে কী?
waitKey(ms) = key press-এর জন্য কত মিলিসেকেন্ড অপেক্ষা। 0 = অনির্দিষ্ট। Video loop-এ ব্যবহার করুন waitKey(1) — প্রতি frame-এ ১ ms।Jupyter / Colab-এ দেখানো
python
import cv2, matplotlib.pyplot as plt
img = cv2.imread("dhaka.jpg")
plt.figure(figsize=(8, 6))
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # BGR → RGB
plt.axis("off"); plt.show()cvtColor(img, COLOR_BGR2RGB) না দিলে matplotlib-এ রং উল্টে (নীল-লাল swap) দেখা যাবে — এটি একদম classic OpenCV mistake।
ছবি save — cv2.imwrite
python
write.py
import cv2
img = cv2.imread("dhaka.jpg")
# Format ফাইল extension থেকেই infer হয়
cv2.imwrite("out.jpg", img)
cv2.imwrite("out.png", img)
# Compression quality control
cv2.imwrite("hq.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 95]) # 0-100
cv2.imwrite("small.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9]) # 0-9| Format | Compression | Best for |
|---|---|---|
| JPG | Lossy | Photo, web, ছোট size দরকার |
| PNG | Lossless | Logo, screenshot, alpha |
| BMP | None | Raw, debugging |
| WEBP | Lossy/Lossless | Modern web, ছোট ও পরিষ্কার |
| TIFF | Lossless | Medical, satellite, multi-page |
End-to-end mini pipeline
python
pipeline.py — পড়া → প্রসেস → দেখানো → save
import cv2, os
INPUT = "dhaka.jpg"
OUTPUT_DIR = "outputs"
os.makedirs(OUTPUT_DIR, exist_ok=True)
img = cv2.imread(INPUT)
if img is None:
raise FileNotFoundError(INPUT)
# ১. resize
img = cv2.resize(img, (800, 600))
# ২. grayscale version
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# ৩. দেখানো (desktop)
cv2.imshow("Color", img)
cv2.imshow("Gray", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ৪. save
cv2.imwrite(f"{OUTPUT_DIR}/resized.jpg", img,
[cv2.IMWRITE_JPEG_QUALITY, 90])
cv2.imwrite(f"{OUTPUT_DIR}/gray.png", gray)
print("Done!")অভিনন্দন!
এটি আপনার প্রথম পূর্ণাঙ্গ OpenCV pipeline। পড়া → রূপান্তর → দেখানো → save — এই pattern পরের ৬০+ অধ্যায় জুড়ে আমরা বারবার ব্যবহার করব।
প্র্যাকটিস টাস্ক
- একটি folder-এর সব ছবি পড়ে grayscale করে আলাদা folder-এ save করুন (Python loop)।
- একটি ছবি JPEG quality 10, 50, 95-এ save করে তিনটির file size ও visual পার্থক্য দেখুন।
- একটি PNG icon load করে শুধু alpha channel আলাদা grayscale image হিসেবে save করুন।
Phase 1 শেষ — কী শিখলেন?
- Computer Vision-এর সংজ্ঞা, ইতিহাস ও real-world ব্যবহার।
- মানুষ ও মেশিন দৃষ্টির পার্থক্য — কোথায় কোনটি জেতে।
- ছবি আসলে একটি matrix; pixel, channel, resolution, bit depth।
- NumPy দিয়ে slicing, broadcasting, masking — image-এর গাণিতিক ভিত্তি।
- OpenCV setup, environment ও project structure।
- imread, imshow, imwrite — প্রতিটি pipeline-এর তিনটি স্তম্ভ।
পরবর্তী যাত্রা — Phase 2
এখন আপনি ছবি পড়তে-লিখতে পারেন। Phase 2-এ আমরা ছবিকে রূপান্তর করতে শিখব — resize, color space, filter, edge, threshold, morphology, histogram। এখান থেকেই শুরু হবে আসল Image Processing-এর জাদু।