دریافت اندازه تصویر (عرض و ارتفاع) با پایتون، OpenCV و Pillow (PIL)

کسب و کار

در پایتون چندین کتابخانه برای مدیریت تصاویر وجود دارد، مانند OpenCV و Pillow (PIL). این بخش نحوه بدست آوردن اندازه تصویر (عرض و ارتفاع) را برای هر یک از آنها توضیح می دهد.

می توانید اندازه تصویر (عرض و ارتفاع) را با استفاده از شکل برای OpenCV و اندازه برای Pillow (PIL) به صورت تاپلی دریافت کنید، اما توجه داشته باشید که ترتیب هر کدام متفاوت است.

اطلاعات زیر در اینجا ارائه شده است.

  • OpenCV
    • ndarray.shape:دریافت اندازه تصویر (عرض، ارتفاع)
      • برای تصاویر رنگی
      • برای تصاویر خاکستری (تک رنگ).
  • Pillow(PIL)
    • size،width،height:دریافت اندازه تصویر (عرض، ارتفاع)

مقاله زیر را در مورد نحوه بدست آوردن اندازه (ظرفیت) یک فایل به جای اندازه (اندازه) تصویر مشاهده کنید.

OpenCV:ndarray.shape:دریافت اندازه تصویر (عرض، ارتفاع)

هنگامی که یک فایل تصویری در OpenCV بارگذاری می شود، به عنوان یک آرایه NumPy در نظر گرفته می شود، و اندازه تصویر (عرض و ارتفاع) را می توان از شکل ویژگی بدست آورد که نشان دهنده شکل درای است.

نه تنها در OpenCV، بلکه زمانی که یک فایل تصویری در Pillow بارگذاری می شود و به یک 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)
اگر می خواهید این تاپل را دریافت کنید، می توانید از slice استفاده کنید و موارد زیر را بنویسید: cv2.resize() و غیره. اگر می خواهید آرگومان را بر اساس اندازه مشخص کنید، از این استفاده کنید.

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

برای تصاویر خاکستری (تک رنگ).

در مورد تصاویر خاکستری (تک رنگ) از ndarray دو بعدی زیر استفاده می شود.

  • ارتفاع سطر)
  • ردیف (عرض)

شکل این تاپلی خواهد بود.

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:دریافت اندازه تصویر (عرض، ارتفاع)

شی تصویری که با خواندن یک تصویر با Pillow (PIL) به دست می آید دارای ویژگی های زیر است.

  • size
  • width
  • height

سایز تاپل زیر می باشد.
(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
Copied title and URL