পাইথন, ওপেনসিভি এবং পিলো (পিআইএল) দিয়ে ছবির আকার (প্রস্থ এবং উচ্চতা) পাওয়া

ব্যবসায়

পাইথনে ছবি পরিচালনার জন্য বেশ কয়েকটি লাইব্রেরি রয়েছে, যেমন OpenCV এবং Pillow (PIL)। এই বিভাগটি ব্যাখ্যা করে কিভাবে তাদের প্রতিটির জন্য ছবির আকার (প্রস্থ এবং উচ্চতা) পেতে হয়।

আপনি OpenCV এর আকার এবং পিলো (PIL) এর জন্য আকার ব্যবহার করে টিপল হিসাবে চিত্রের আকার (প্রস্থ এবং উচ্চতা) পেতে পারেন, তবে মনে রাখবেন যে প্রতিটির ক্রম ভিন্ন।

নিম্নলিখিত তথ্য এখানে প্রদান করা হয়.

  • OpenCV
    • ndarray.shape:ছবির আকার পান (প্রস্থ, উচ্চতা)
      • রঙিন ছবির জন্য
      • গ্রেস্কেল (একরঙা) ছবির জন্য
  • Pillow(PIL)
    • size,width,height:ছবির আকার পান (প্রস্থ, উচ্চতা)

চিত্রের আকার (আকার) এর পরিবর্তে কীভাবে একটি ফাইলের আকার (ক্ষমতা) পেতে হয় সে সম্পর্কে নিম্নলিখিত নিবন্ধটি দেখুন।

OpenCV:ndarray.shape:ছবির আকার পান (প্রস্থ, উচ্চতা)

যখন OpenCV-এ একটি ইমেজ ফাইল লোড করা হয়, তখন এটি একটি NumPy অ্যারে ndarray হিসাবে ধরা হয় এবং ছবির আকার (প্রস্থ এবং উচ্চতা) অ্যাট্রিবিউট আকৃতি থেকে পাওয়া যেতে পারে, যা ndarray-এর আকৃতি নির্দেশ করে।

শুধুমাত্র OpenCV-তে নয়, একটি ছবি ফাইল পিলোতে লোড করা হলে এবং ndarray-এ রূপান্তরিত হলে, ndarray দ্বারা উপস্থাপিত চিত্রের আকার আকৃতি ব্যবহার করে প্রাপ্ত হয়।

রঙিন ছবির জন্য

রঙিন ছবির ক্ষেত্রে, নিম্নলিখিত ত্রিমাত্রিক ndarray ব্যবহার করা হয়।

  • সারির উচ্চতা)
  • সারি (প্রস্থ)
  • রঙ (3)

আকৃতি হল উপরের উপাদানগুলির একটি টিপল।

import cv2

im = cv2.imread('data/src/lena.jpg')

print(type(im))
# <class 'numpy.ndarray'>

print(im.shape)
print(type(im.shape))
# (225, 400, 3)
# <class 'tuple'>

একটি ভেরিয়েবলে প্রতিটি মান বরাদ্দ করতে, টিপলটিকে নিম্নরূপ আনপ্যাক করুন।

h, w, c = im.shape
print('width:  ', w)
print('height: ', h)
print('channel:', c)
# width:   400
# height:  225
# channel: 3

_
একটি টিপল আনপ্যাক করার সময়, উপরেরটি প্রচলিতভাবে মানগুলির জন্য একটি পরিবর্তনশীল হিসাবে বরাদ্দ করা যেতে পারে যা পরে ব্যবহার করা হবে না। উদাহরণস্বরূপ, যদি রঙের সংখ্যা (চ্যানেলের সংখ্যা) ব্যবহার না করা হয় তবে নিম্নলিখিতটি ব্যবহার করা হয়।

h, w, _ = im.shape
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

এটি একটি ভেরিয়েবলের সাথে বরাদ্দ না করে সূচক (সূচী) দ্বারা নির্দিষ্ট করে ব্যবহার করা যেতে পারে।

print('width: ', im.shape[1])
print('height:', im.shape[0])
# width:  400
# height: 225

(width, height)
আপনি যদি এই টিপলটি পেতে চান, আপনি স্লাইস ব্যবহার করতে পারেন এবং নিম্নলিখিতটি লিখতে পারেন: cv2.resize(), ইত্যাদি। আপনি যদি আকার অনুসারে আর্গুমেন্ট নির্দিষ্ট করতে চান তবে এটি ব্যবহার করুন।

print(im.shape[1::-1])
# (400, 225)

গ্রেস্কেল (একরঙা) ছবির জন্য

গ্রেস্কেল (একরঙা) চিত্রের ক্ষেত্রে, নিম্নলিখিত দ্বি-মাত্রিক ndarray ব্যবহার করা হয়।

  • সারির উচ্চতা)
  • সারি (প্রস্থ)

আকৃতি এই tuple হবে.

im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE)

print(im_gray.shape)
print(type(im_gray.shape))
# (225, 400)
# <class 'tuple'>

মূলত রঙিন ছবির মতোই।

h, w = im_gray.shape
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

print('width: ', im_gray.shape[1])
print('height:', im_gray.shape[0])
# width:  400
# height: 225

আপনি যদি ভেরিয়েবলের জন্য প্রস্থ এবং উচ্চতা নির্ধারণ করতে চান, তাহলে আপনি নিচের মত করে করতে পারেন, চিত্রটি রঙিন হোক বা গ্রেস্কেল হোক।

h, w = im.shape[0], im.shape[1]
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

(width, height)
আপনি যদি এই টিপলটি পেতে চান তবে আপনি স্লাইস ব্যবহার করতে পারেন এবং এটি নিম্নরূপ লিখতে পারেন। চিত্রটি রঙিন হোক বা গ্রেস্কেলে হোক নিচের লেখার ধরনটি ব্যবহার করা যেতে পারে।

print(im_gray.shape[::-1])
print(im_gray.shape[1::-1])
# (400, 225)
# (400, 225)

Pillow(PIL):size, width, height:ছবির আকার পান (প্রস্থ, উচ্চতা)

পিলো (পিআইএল) সহ একটি চিত্র পড়ার মাধ্যমে প্রাপ্ত চিত্র বস্তুর নিম্নলিখিত বৈশিষ্ট্য রয়েছে।

  • size
  • width
  • height

আকার নিম্নলিখিত tuple হয়.
(width, height)

from PIL import Image

im = Image.open('data/src/lena.jpg')

print(im.size)
print(type(im.size))
# (400, 225)
# <class 'tuple'>

w, h = im.size
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

আপনি বৈশিষ্ট্য হিসাবে যথাক্রমে প্রস্থ এবং উচ্চতা পেতে পারেন।
width,height

print('width: ', im.width)
print('height:', im.height)
# width:  400
# height: 225

একই কথা গ্রেস্কেল (একরঙা) ছবির ক্ষেত্রেও প্রযোজ্য।

im_gray = Image.open('data/src/lena.jpg').convert('L')

print(im.size)
print('width: ', im.width)
print('height:', im.height)
# (400, 225)
# width:  400
# height: 225

পাইথনে ছবি পরিচালনার জন্য বেশ কয়েকটি লাইব্রেরি রয়েছে, যেমন OpenCV এবং Pillow (PIL)। এই বিভাগটি ব্যাখ্যা করে কিভাবে তাদের প্রতিটির জন্য ছবির আকার (প্রস্থ এবং উচ্চতা) পেতে হয়।

আপনি OpenCV এর আকার এবং পিলো (PIL) এর জন্য আকার ব্যবহার করে টিপল হিসাবে চিত্রের আকার (প্রস্থ এবং উচ্চতা) পেতে পারেন, তবে মনে রাখবেন যে প্রতিটির ক্রম ভিন্ন।

নিম্নলিখিত তথ্য এখানে প্রদান করা হয়.

  • OpenCV
    • ndarray.shape:ছবির আকার পান (প্রস্থ, উচ্চতা)
      • রঙিন ছবির জন্য
      • গ্রেস্কেল (একরঙা) ছবির জন্য
  • Pillow(PIL)
    • size,width,height:ছবির আকার পান (প্রস্থ, উচ্চতা)

চিত্রের আকার (আকার) এর পরিবর্তে কীভাবে একটি ফাইলের আকার (ক্ষমতা) পেতে হয় সে সম্পর্কে নিম্নলিখিত নিবন্ধটি দেখুন।

OpenCV:ndarray.shape:ছবির আকার পান (প্রস্থ, উচ্চতা)

যখন OpenCV-এ একটি ইমেজ ফাইল লোড করা হয়, তখন এটি একটি NumPy অ্যারে ndarray হিসাবে ধরা হয় এবং ছবির আকার (প্রস্থ এবং উচ্চতা) অ্যাট্রিবিউট আকৃতি থেকে পাওয়া যেতে পারে, যা ndarray-এর আকৃতি নির্দেশ করে।

শুধুমাত্র OpenCV-তে নয়, একটি ছবি ফাইল পিলোতে লোড করা হলে এবং ndarray-এ রূপান্তরিত হলে, ndarray দ্বারা উপস্থাপিত চিত্রের আকার আকৃতি ব্যবহার করে প্রাপ্ত হয়।

রঙিন ছবির জন্য

রঙিন ছবির ক্ষেত্রে, নিম্নলিখিত ত্রিমাত্রিক ndarray ব্যবহার করা হয়।

  • সারির উচ্চতা)
  • সারি (প্রস্থ)
  • রঙ (3)

আকৃতি হল উপরের উপাদানগুলির একটি টিপল।

import cv2

im = cv2.imread('data/src/lena.jpg')

print(type(im))
# <class 'numpy.ndarray'>

print(im.shape)
print(type(im.shape))
# (225, 400, 3)
# <class 'tuple'>

একটি ভেরিয়েবলে প্রতিটি মান বরাদ্দ করতে, টিপলটিকে নিম্নরূপ আনপ্যাক করুন।

h, w, c = im.shape
print('width:  ', w)
print('height: ', h)
print('channel:', c)
# width:   400
# height:  225
# channel: 3

_
একটি টিপল আনপ্যাক করার সময়, উপরেরটি প্রচলিতভাবে মানগুলির জন্য একটি পরিবর্তনশীল হিসাবে বরাদ্দ করা যেতে পারে যা পরে ব্যবহার করা হবে না। উদাহরণস্বরূপ, যদি রঙের সংখ্যা (চ্যানেলের সংখ্যা) ব্যবহার না করা হয় তবে নিম্নলিখিতটি ব্যবহার করা হয়।

h, w, _ = im.shape
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

এটি একটি ভেরিয়েবলের সাথে বরাদ্দ না করে সূচক (সূচী) দ্বারা নির্দিষ্ট করে ব্যবহার করা যেতে পারে।

print('width: ', im.shape[1])
print('height:', im.shape[0])
# width:  400
# height: 225

(width, height)
আপনি যদি এই টিপলটি পেতে চান, আপনি স্লাইস ব্যবহার করতে পারেন এবং নিম্নলিখিতটি লিখতে পারেন: cv2.resize(), ইত্যাদি। আপনি যদি আকার অনুসারে আর্গুমেন্ট নির্দিষ্ট করতে চান তবে এটি ব্যবহার করুন।

print(im.shape[1::-1])
# (400, 225)

গ্রেস্কেল (একরঙা) ছবির জন্য

গ্রেস্কেল (একরঙা) চিত্রের ক্ষেত্রে, নিম্নলিখিত দ্বি-মাত্রিক ndarray ব্যবহার করা হয়।

  • সারির উচ্চতা)
  • সারি (প্রস্থ)

আকৃতি এই tuple হবে.

im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE)

print(im_gray.shape)
print(type(im_gray.shape))
# (225, 400)
# <class 'tuple'>

মূলত রঙিন ছবির মতোই।

h, w = im_gray.shape
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

print('width: ', im_gray.shape[1])
print('height:', im_gray.shape[0])
# width:  400
# height: 225

আপনি যদি ভেরিয়েবলের জন্য প্রস্থ এবং উচ্চতা নির্ধারণ করতে চান, তাহলে আপনি নিচের মত করে করতে পারেন, চিত্রটি রঙিন হোক বা গ্রেস্কেল হোক।

h, w = im.shape[0], im.shape[1]
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

(width, height)
আপনি যদি এই টিপলটি পেতে চান তবে আপনি স্লাইস ব্যবহার করতে পারেন এবং এটি নিম্নরূপ লিখতে পারেন। চিত্রটি রঙিন হোক বা গ্রেস্কেলে হোক নিচের লেখার ধরনটি ব্যবহার করা যেতে পারে।

print(im_gray.shape[::-1])
print(im_gray.shape[1::-1])
# (400, 225)
# (400, 225)

Pillow(PIL):size, width, height:ছবির আকার পান (প্রস্থ, উচ্চতা)

পিলো (পিআইএল) সহ একটি চিত্র পড়ার মাধ্যমে প্রাপ্ত চিত্র বস্তুর নিম্নলিখিত বৈশিষ্ট্য রয়েছে।

  • size
  • width
  • height

আকার নিম্নলিখিত tuple হয়.
(width, height)

from PIL import Image

im = Image.open('data/src/lena.jpg')

print(im.size)
print(type(im.size))
# (400, 225)
# <class 'tuple'>

w, h = im.size
print('width: ', w)
print('height:', h)
# width:  400
# height: 225

আপনি বৈশিষ্ট্য হিসাবে যথাক্রমে প্রস্থ এবং উচ্চতা পেতে পারেন।
width,height

print('width: ', im.width)
print('height:', im.height)
# width:  400
# height: 225

একই কথা গ্রেস্কেল (একরঙা) ছবির ক্ষেত্রেও প্রযোজ্য।

im_gray = Image.open('data/src/lena.jpg').convert('L')

print(im.size)
print('width: ', im.width)
print('height:', im.height)
# (400, 225)
# width:  400
# height: 225