Jupyter에서 이미지 표시 방법 이해 (OpenCV의 imshow/matplotlib 활용)

소개



 이 기사에서는, Jupyter상에서 화상을 표시시키는 방법 및, 인수나 리스트를 바꾸어 출력 화상과 대응하고 있는 기능을 이해하려고 하는 기사입니다.
소직은 기계 학습 초학자이므로, 의견·실수 있으면 지적 받을 수 있으면 대단히 감사합니다.

요약
  • 이미지를 인라인으로 표시
  • resize 모듈을 사용하여 모자이크 적용
  • 투과율 증가

  • 이미지를 인라인으로 표시



    pic.ipynb
    
    import cv2
    import matplotlib.pyplot as plt
    
    img = cv2.imread('012.JPG') #読み込みたい任意の画像をpic.ipynbと同フォルダに入れておきましょう。
    fig = plt.figure(figsize=(10,10))
    ax = fig.add_subplot(1,1,1)
    ax.imshow(img)
    ax.axis("off")
    
    



    우선은 기본적으로 이미지를 표시했습니다.
    여기서 (-0.5,719.5,719.5,-0.5)는 왼쪽 하단 좌표가 (-0.5,719.5)이고 오른쪽 위 좌표가 (719.5, -0.5)임을 나타냅니다.
    이미지의 표시는 수학에서 배운 xy축 방향과 다르고, 왼쪽 상단에 원점이 오고 있으므로, 아래와 같이 됩니다.



    이미지 크기 확인



    pic.ipynb
    img.shape
    
    (720, 720, 3)
    

    (세로 해상도, 가로 해상도, 채널 수)를 나타내므로, 720×720의 3 채널(=RGB의 칼라)이라고 하는 것을 알 수 있군요.
    주의점으로서는, 이것을 xy로 나타내면(y, x, 채널수)가 되는 것입니다.

     

    이미지 좌표와 그 위치의 이미지 표시



    pic.ipynb
    img[0,0]
    
    array([162, 127,  77], dtype=uint8)
    

    원점 위치(0,0)의 RGB값은 (162,127,77)인 것을 알았습니다. 또한 표시를 하면 다음과 같이 됩니다.

    pic.ipynb
    
    fig = plt.figure(figsize=(10,10))
    ax = fig.add_subplot(111)
    ax.imshow(img[0:1,0:1])#表示し値座標を範囲で指定する
    ax.axis("on")
    



    (0,0) 좌표를 표시하고 싶은 경우에도 [0:1,0:1]과 같이 범위에서 지정하지 않으면 에러가 나오므로 주의합시다.

    x, y 좌표에 주의해서 표시



    pic.ipynb
    fig = plt.figure(figsize=(10,10))
    ax = fig.add_subplot(111)
    ax.imshow(img[0:720,0:10])
    ax.axis("on")
    

    img[0:720,0:10]로 지정하면, y:0~720, x:0~10으로 표시하기 때문에 세로 길이가 됩니다. x, y 좌표의 머리가 있으면 반대가 되므로, 주의합시다. 아래 이미지에서는 세로 이미지가 되네요.



    resize 모듈을 사용하여 모자이크 적용



    pic.ipynb
    img_re= cv2.resize(img, dsize=None, fx=0.1, fy =0.1)
    fig = plt.figure(figsize=(10,10))
    ax = fig.add_subplot(1,1,1)
    ax.imshow(img_re)
    ax.axis("off")
    

    cv2.resize() 모듈에 의해 화소수를 1/10으로 하는 것으로, 모자이크를 걸습니다.
    resize에 있어서의 인수로, fx 및 fy가 x, y의 배율이 됩니다. 이번은 0.1(=10%)로 하는 것으로, 화소수를 1/10으로 했습니다.



    투과율 증가



    pic.ipynb
    fig, ax = plt.subplots(facecolor="w")
    ax.imshow(img, alpha=0.5)
    
    plt.show()
    

    imshow 모듈의 alpha에의 인수를 0~1의 범위로 지정해 투과율을 결정하는 것으로, 얇은 색조로 변화시킬 수 있습니다.



    끝에



    화상을 취급해 처리를 해 나가려고 하면(자), 이번의 조작은 기본적인 것입니다. 스스로 손을 움직여 실감을 얻는 것이 매우 중요하다고 생각했습니다.

    프로그램 전문은 아래에 저장되어 있습니다.
    htps : // 기주 b. 코 m / 후미 오 에이 씨 / 쥬 py r_ 피 c20200313

    좋은 웹페이지 즐겨찾기