python-imutils 패키지 프로필 사용
기사 목록입니다.
python-imutils 패키지 프로필 사용
1.imutils 기능 소개입니다
설치 방법:
2.이뮤틸스 사용법입니다
2.1 그림을 이동시킵니다
2.2 확대/ 축소합니다
2.3 그림을 회전시킵니다
2.4 골격추출(가장자리추출)
2.5 RGB를 돌려서 Matplotlib로 표시합니다
2.6 OPenCV 버전 탐지입니다
1.imutils 기능 소개입니다
imutils는 OPenCV 인터페이스를 호출하는 보다 간단한 목적을 달성하기 위해 OPenCV를 기반으로 하는 패키지로 이미지의 이동, 회전, 스케일링 및 골격화와 같은 일련의 작업을 쉽게 실현할 수 있습니다.
설치 방법:
pip install imutils
numpy, scipy, matplotlib 및 opencv가 설치되어 있는지 설치 전에 확인해야 합니다.
패키지 누락 오류가 발생하면요
다음 설치 명령을 사용하여 모든 패키지를 설치할 수 있습니다
pip install NumPy SciPy opencv-python matplotlib imutils
2.이뮤틸스 사용법입니다
2.1 그림을 이동시킵니다
원래 cv에 비해, imutiles를 사용하면 변환 행렬을 구성하지 않고 변환 픽셀을 직접 지정할 수 있습니다
이미지 병진 구현은 OpenCV에서도 제공되며 먼저 병진 행렬을 계산한 다음 아핀 변환을 사용하여 병진을 구현하려면 이미지 병진을 이뮤틸에서 직접 수행할 수 있습니다.
translated = imutils.translate(img,x,y)
매개 변수:
img: 이동할 그림입니다
x:x축 방향으로 움직이는 픽셀의 개수입니다
y: y축 방향으로 움직이는 픽셀의 개수입니다
실행 코드 설명:
이미지 주소를 변경하려면 주소에 중국어를 포함할 수 없습니다
cv에서 그림을 읽는 것은 BGR 형식이고, img[:,:,::::1]은 RGB 형식으로 되돌리기 위한 것입니다. 그래야 컬러 이미지를 정상적으로 표시할 수 있습니다
import numpy as np
import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #중국어 탭을 정상적으로 표시합니다.
plt.rcParams['axes.unicode_minus'] = False # 일반 음수 표시에 사용합니다.
img = cv.imread ('image1.jpg') # 그림 주소 변경하기
translated = imutils.translate(img, 100, 50) # 변환 함수입니다.
plt.figure()
plt.subplot(121)
plt.imshow(img[:,:::: -1]) # img[:::::::::::::::::::::::::::::::::
plt.title ('원본 그림')
plt.subplot(122)
plt.imshow(translated[:,:,::-1])
plt.title( '결과 이동')
plt.show()
2.2 확대/ 축소합니다
OPenCV에서 사진의 줌은 종횡비를 유지하도록 주의해야 합니다.이뮤틸스에서는 자동으로 원래 사진의 가로 세로 비율을 유지하고, 너비 weight와 height만 지정하면 됩니다.
스케일링 함수: imutils.resize(img, width=100)
import numpy as np
import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #중국어 탭을 정상적으로 표시합니다.
plt.rcParams['axes.unicode_minus'] = False # 일반 음수 표시에 사용합니다.
img = cv.imread('image1.jpg')
# 일반적으로 width 매개 변수가 있으면 width 매개 변수를 설치하여 스케일링하고 height 매개 변수를 무시하며, 두 매개 변수가 비례하지 않으면 width를 설치하여 스케일링합니다.
resized = imutils.resize(img,width=100) # 너비를 지정하면 해당 비율의 높이가 자동으로 계산되며 파라미터 height도 있습니다.
print('원본 크기: ', img.shape')
print( '크기 크기 조정', resized.shape)
plt.figure()
plt.subplot(121)
plt.imshow(img[:,:,::-1])
plt.title ('원본 그림')
plt.subplot(122)
plt.imshow(resized[:,:,::-1])
plt.title ('줌 그림')
plt.show()
3 그림 회전합니다
OpenCV에서 회전할 때 아핀 변환을 사용하는데 여기서 이미지 회전 방법은 imutils.rotate( )로 두 가지 매개변수가 있으며 첫 번째는 이미지 데이터, 두 번째는 회전 각도, 회전은 반시계 방향입니다.동시에 imutils는 시계 방향으로 회전하는 또 다른 유사한 방법인 rotate_round( )를 제공합니다
함수:
시계 반대 방향으로 돌립니다
rotated = imutils.rotate(image, 90)
시계 방향으로 돌립니다
rotated_round = imutils.rotate_bound(image, 90)
import numpy as np
import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #중국어 탭을 정상적으로 표시합니다.
plt.rcParams['axes.unicode_minus'] = False # 일반 음수 표시에 사용합니다.
image = cv.imread('image1.jpg')
# 시계 반대 방향으로 돌립니다
rotated = imutils.rotate(image, 90)
# 시계 방향으로 돌립니다
rotated_round = imutils.rotate_bound(image, 90) # 그림을 그립니다
plt.figure(figsize=[10, 10])
plt.subplot(1,3,1)
plt.imshow(img[:,:,::-1])
plt.title ('원본 그림')
plt.axis("off")
plt.subplot(1,3,2)
plt.imshow(rotated[:,:,::-1])
plt.title('반시계방향으로 90도 회전')
plt.axis("off")
plt.subplot(1,3,3)
plt.imshow(rotated_round[:,:,::-1])
plt.title('시계 방향으로 90도 회전')
plt.axis("off")
plt.show()
2.4 골격추출(가장자리추출)
스켈레톤 추출(엣지 추출)은 사진 속 물체를 토폴로지 스켈레톤으로 구성하는 과정을 말합니다.
imutils에서 제공하는 방법은 skeletonize( )입니다.
두 번째 매개변수는 구조적 매개변수의 크기(structuring element)로 입자 크기에 해당하며 작을수록 처리 시간이 길어집니다.(3,3)로 설정할 수 있으며, 아래의 실험에서는 (7,7의)를 사용하였습니다
주의, 모든 그림에서 골격을 구할 수 있는 것은 아닙니다. 예를 들어 제가 위에 사용한 도라에몽은 안 됩니다
import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #중국어 탭을 정상적으로 표시합니다.
plt.rcParams['axes.unicode_minus'] = False # 일반 음수 표시에 사용합니다.
# 1 그림 읽기입니다
image2 = cv.imread('earth.png')
# 2 그레이스케일링합니다
gray = cv.cvtColor(image2, cv.COLOR_BGR2GRAY)
# 3 스켈레톤 추출입니다
skeleton = imutils.skeletonize(gray, size=(7, 7))
# 4 그림으로 보여 줍니다
plt.figure()
plt.subplot(121), plt.imshow(image2[:,::::1]), plt.title('원본') 입니다.
plt.subplot (122), plt.imshow (skeleton, cmap="gray"), plt.title ('스켈레톤 추출 결과') # 그레이스케일 그림을 표시합니다. gray를 선언하려면
plt.show()
2.5 RGB를 돌려서 Matplotlib로 표시합니다
OpenCV의 파이썬 바인딩에서 이미지는 BGR 순서로 NumPy 배열로 표시됩니다.이 cv2.imshow 기능을 사용할 때 효과가 좋습니다.그러나 Matplotlib를 사용하려는 경우 이 plt.imshow 함수는 이미지가 RGB 순서로 정렬된다고 가정합니다.이 문제를 해결하기 위해 cv2.cvtColor를 호출하거나 opencv2matplotlib의 편리한 기능을 사용할 수도 있습니다
img = cv.imread("lion.jpeg")
plt.figure()
plt.imshow(imutils.opencv2matplotlib(img))
2.6 OPenCV 버전 탐지입니다
OpenCV4 출시 후 주요 버전이 업데이트됨에 따라 역호환성 문제가 특히 두드러졌습니다.OPenCV를 사용할 때 현재 사용 중인 OpenCV 버전을 확인한 다음 적절한 함수 또는 방법을 사용해야 합니다.imutils의 is_cv2(), is_cv3() 및 is_cv4()는 현재 환경을 자동으로 결정하는 데 사용할 수 있는 OpenCV의 간단한 기능입니다
print("OPenCV 버전: {}).format(cv2._version_)) 입니다
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
Python 딥러닝에서 자주 사용하는 패키지 요약입니다 (0) | 2022.12.06 |
---|---|
파이썬넘바 라이브러리 (0) | 2022.12.06 |
python은 ValueError could not broadcast input array from shape 또는 Can't convert non-rectangular를 보고합니다 (0) | 2022.12.06 |
python 현재 실행 중인 스레드 이름과 개수를 가져옵니다. threading.enumerate( ) (0) | 2022.12.06 |
python flask send_file 파일을 업로드하고 jquery.js를 통해 다운로드합니다 (0) | 2022.12.06 |