Python, OpenCV болон Pillow (PIL) ашиглан зургийн хэмжээг (өргөн ба өндөр) авах

Бизнес эрхэлдэг

Python дээр OpenCV, Pillow (PIL) зэрэг зурагтай ажиллах хэд хэдэн номын сан байдаг. Энэ хэсэгт тус бүрийн зургийн хэмжээг (өргөн ба өндөр) хэрхэн авах талаар тайлбарласан болно.

Та зургийн хэмжээг (өргөн ба өндөр) OpenCV-ийн хэлбэр, Pillow-ийн хэмжээг (PIL) ашиглан багц хэлбэрээр авах боломжтой боловч тус бүрийн дараалал өөр байдгийг анхаарна уу.

Энд дараах мэдээллийг хүргэж байна.

  • OpenCV
    • ndarray.shape:Зургийн хэмжээг (өргөн, өндөр) авах
      • Өнгөт зургийн хувьд
      • Саарал өнгийн (монохром) зургийн хувьд
  • Pillow(PIL)
    • size,width,height:Зургийн хэмжээг (өргөн, өндөр) авах

Зургийн хэмжээ (хэмжээ)-ийн оронд файлын хэмжээг (багтаамж) хэрхэн авах талаар дараах нийтлэлээс үзнэ үү.

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:Зургийн хэмжээг (өргөн, өндөр) авах

Зургийн хэмжээ (хэмжээ)-ийн оронд файлын хэмжээг (багтаамж) хэрхэн авах талаар дараах нийтлэлээс үзнэ үү.

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
Copied title and URL