Python дээр OpenCV, Pillow (PIL) зэрэг зурагтай ажиллах хэд хэдэн номын сан байдаг. Энэ хэсэгт тус бүрийн зургийн хэмжээг (өргөн ба өндөр) хэрхэн авах талаар тайлбарласан болно.
Та зургийн хэмжээг (өргөн ба өндөр) OpenCV-ийн хэлбэр, Pillow-ийн хэмжээг (PIL) ашиглан багц хэлбэрээр авах боломжтой боловч тус бүрийн дараалал өөр байдгийг анхаарна уу.
Энд дараах мэдээллийг хүргэж байна.
- OpenCV
ndarray.shape
:Зургийн хэмжээг (өргөн, өндөр) авах- Өнгөт зургийн хувьд
- Саарал өнгийн (монохром) зургийн хувьд
- Pillow(PIL)
size
,width
,height
:Зургийн хэмжээг (өргөн, өндөр) авах
Зургийн хэмжээ (хэмжээ)-ийн оронд файлын хэмжээг (багтаамж) хэрхэн авах талаар дараах нийтлэлээс үзнэ үү.
- Холбоотой нийтлэлүүд:Python дээр файл эсвэл лавлах (хавтас) хэмжээг авах
OpenCV:ndarray.shape:Зургийн хэмжээг (өргөн, өндөр) авах
Зургийн файлыг OpenCV-д ачаалах үед түүнийг NumPy массив ndarray гэж үзэх ба зургийн хэмжээг (өргөн ба өндөр) ndarray-ийн хэлбэрийг заадаг атрибутын хэлбэрээс авах боломжтой.
Зөвхөн OpenCV-д төдийгүй Pillow-д зургийн файлыг ачаалж 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)
Хэрэв та энэ tuple-г авахыг хүсвэл 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
Python дээр OpenCV, Pillow (PIL) зэрэг зурагтай ажиллах хэд хэдэн номын сан байдаг. Энэ хэсэгт тус бүрийн зургийн хэмжээг (өргөн ба өндөр) хэрхэн авах талаар тайлбарласан болно.
Та зургийн хэмжээг (өргөн ба өндөр) OpenCV-ийн хэлбэр, Pillow-ийн хэмжээг (PIL) ашиглан багц хэлбэрээр авах боломжтой боловч тус бүрийн дараалал өөр байдгийг анхаарна уу.
Энд дараах мэдээллийг хүргэж байна.
- OpenCV
ndarray.shape
:Зургийн хэмжээг (өргөн, өндөр) авах- Өнгөт зургийн хувьд
- Саарал өнгийн (монохром) зургийн хувьд
- Pillow(PIL)
size
,width
,height
:Зургийн хэмжээг (өргөн, өндөр) авах
Зургийн хэмжээ (хэмжээ)-ийн оронд файлын хэмжээг (багтаамж) хэрхэн авах талаар дараах нийтлэлээс үзнэ үү.
- Холбоотой нийтлэлүүд:Python дээр файл эсвэл лавлах (хавтас) хэмжээг авах
OpenCV:ndarray.shape:Зургийн хэмжээг (өргөн, өндөр) авах
Зургийн файлыг OpenCV-д ачаалах үед түүнийг NumPy массив ndarray гэж үзэх ба зургийн хэмжээг (өргөн ба өндөр) ndarray-ийн хэлбэрийг заадаг атрибутын хэлбэрээс авах боломжтой.
Зөвхөн OpenCV-д төдийгүй Pillow-д зургийн файлыг ачаалж 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)
Хэрэв та энэ tuple-г авахыг хүсвэл 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