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)
Бұл кортежді алғыңыз келсе, 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)
Бұл кортежді алғыңыз келсе, 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