python imutils 패키지 기본 개념 및 사용

6410 단어 pythonimutils싸다.
1.imutils 기능 소개
imutils 는 OPenCV 를 바탕 으로 하 는 패키지 로 더욱 간단 한 OPenCV 인 터 페 이 스 를 호출 하 는 목적 을 달성 합 니 다.이미지 의 이동,회전,확대,골조 화 등 일련의 작업 을 쉽게 실현 할 수 있 습 니 다.
설치 방법:
pip install imutils
설치 하기 전에 numpy,scipy,matplotlib,opencv 가 설치 되 어 있 는 지 확인 해 야 합 니 다.
하면,만약,만약...
아래 설치 명령 을 사용 하면 모든 가방 을 설치 할 수 있 습 니 다.
pip install NumPy SciPy opencv-python matplotlib imutils
2.imutils 의 사용 방법
 2.1 이미지 이동
원래 cv 에 비해 imutiles 를 사용 하면 이동 하 는 픽 셀 을 직접 지정 할 수 있 으 며,이동 행렬 을 구성 하지 않 아 도 됩 니 다.
OpenCV 에서 도 이미지 이동 의 실현 을 제공 합 니 다.먼저 이동 행렬 을 계산 한 다음 에 시 뮬 레이 션 변환 을 이용 하여 이동 을 실현 하고 imutils 에서 이미지 의 이동 을 직접 할 수 있 습 니 다.
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[:,:,::-1]       RGB  ,             
    plt.title('  ')
    plt.subplot(122)
    plt.imshow(translated[:,:,::-1])
    plt.title('    ')
    plt.show()
    image-20210703155234783
    2.2 그림 크기 조정
    그림 의 크기 는 OPENCV 에서 너비 와 높이 를 유지 하도록 주의해 야 한다.imutils 에 서 는 기 존 그림 의 너비 와 높이 를 자동 으로 유지 하고 너비 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()
    image-20210703160646632
    2.3 그림 회전
    OpenCV 에서 회전 할 때 사용 하 는 것 은 모방 변환 이다.여기 서 그림 회전 방법 은imutils.rotate()이 고 2 개의 매개 변수 와 첫 번 째 는 그림 데이터 이 며 두 번 째 는 회전 하 는 각도 이 며 회전 은 시계 반대 방향 이다.이 동시에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()
    image-20210703161411578
    2.4 골조 추출(가장자리 추출)
    골조 추출(가장자리 추출)은 그림 속 물체 에 대해 토폴로지 골조(topological skeleton)를 구축 하 는 과정 을 말한다.
    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()
    image-20210703164058284
    2.5 회전 RGB,Matplotlib 로 표시
    OpenCV 의 Python 바 인 딩 에서 그림 은 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 버 전 검사
    OpenCV 4 발표 이후 주요 버 전이 업데이트 되면 서 향후 호환성 문제 가 두 드 러 졌 다.OPenCV 를 사용 할 때 현재 어떤 버 전의 OpenCV 를 사용 하고 있 는 지 확인 한 다음 에 적당 한 함수 나 방법 을 사용 해 야 합 니 다.imutils 에서is_cv2()、is_cv3() is_cv4()는 현재 환경 을 자동 으로 확인 할 수 있 는 OpenCV 버 전의 간단 한 기능 입 니 다.
    
    print("OPenCV  : {}".format(cv2.__version__))
    python imutils 패키지 소개 에 사용 되 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python imutils 패키지 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기