در این پست آموزشی میخواهیم دو روش گرفتن width و height یک تصویر در پایتون را آموزش دهیم.
به طور خلاصه می توان گفت که اندازه تصویر را می توان در قالب tuple از ویژگی shape از شئ ndarray در OpenCV و ویژگی size از شئ PIL.Image در Pillow یا همان PIL به دست آورد. توجه کنید که در این دو روش ترتیب مقادیر width و height متفاوت داده می شود.
دز ادامه مطلب به بخش های زیر می پردازیم.
- اندازه تصویر در OpenCV با ndarray.shape
- برای تصاویر رنگی
- برای تصاویر خاکستری (تک رنگ)
- اندازه تصویر در Pillow با ویژگی size
اندازه تصویر در OpenCV با ndarray.shape
هنگامی که یک فایل تصویر توسط OpenCV خوانده می شود، خروجی از جنس آرایه NumPy خواهد بود. بنابراین اندازه (عرض، ارتفاع) تصویر را می توان از ویژگی shape به دست آورد.
گرفتن اندازه برای تصاویر رنگی
در مورد یک تصویر رنگی، یک ndarray سه بعدی با اندازه ابعاد زیر خوانده می شود.
row (height) x column (width) x color (3)
بنابراین اگر مقدار ویزگی shape شئ خوانده شده را بگیرید، درون tuple دریافتی ابتدا ارتفاع و سپس عرض و در نهایت مقدار عدد سه را خواهید داشت.
به مثال زیر توجه کنید.
import cv2 im = cv2.imread('color-image.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 print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
گرفتن اندازه برای تصاویر خاکستری (تک رنگ)
اگر سعی کنید یک تصویر خاکستری بدون رنگ را از فایلی بخوانید، یک ndarray سه بعدی با اندازه ابعاد زیر خوانده می شود.
row (height) x column (width)
بنابراین اگر مقدار ویزگی shape شئ خوانده شده را بگیرید، درون tuple آن فقط دو مقدار وجود دارد که ابتدا ارتفاع و سپس عرض را خواهید داشت.
مثال زیر برای یک تصویر خاکستری است.
im_gray = cv2.imread('grayscale-image.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
اندازه تصویر در Pillow با ویژگی size
شئ PIL.Image که با خواندن یک تصویر با کتابخانه Pillow (PIL) به دست میآید، دارای ویژگیهای اندازه (size)، عرض (width) و ارتفاع (height) است.
اگر مقدار ویژگی size را بگیرید، یک tuple خواهید داشت که به صورت (width, height) مرتب شده است.
مثال زیر با استفاده از این روش نوشته شده است.
from PIL import Image im = Image.open('image.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 print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
این شکل نوشتار و استفاده، برای تصاویر رنگی و خاکستری تفاوتی ندارد و به یک شیوه یکسان است.
منبع:
Get image size (width, height) with Python, OpenCV, Pillow (PIL)
نوشته گرفتن اندازه تصویر (عرض و ارتفاع) در پایتون با OpenCV و Pillow اولین بار در اوپن مایند. پدیدار شد.