Google 공동체에서 OpenCV 사용하기

자신의 PC에 아무것도 소프트웨어를 설치하지 않고 다음과 같은 이미지 처리를 할 수 있습니다



입력 이미지(원 이미지)


출력 이미지 (변환 후 이미지), 고양이 얼굴의 위치를 ​​인식하고 거기에 원을 작성합니다.


Google 공동체를 사용하므로 Google 계정이 필요합니다.

1. Google Colaboratory에 연결



'Google 드라이브'를 검색하여 Google 계정으로 로그인합니다.





새로 만들기, 기타, 앱 추가를 선택합니다.





공동체를 선택합니다.





계속을 클릭하여 Colaboratory를 설치합니다.





설치가 끝나면 '신규', '기타'에서 'Google 공동체'를 선택할 수 있습니다.





'Google 공동체'를 선택하면 새 파일이 만들어져 공동체가 시작됩니다.





이 이후에는 3. 필요한 파일을 준비하는 것을 제외하고는 모두 Colaboratory 안에서의 조작이 됩니다.

2. OpenCV, 드로잉 라이브러리(matplotlib) 로드



Colaboratory의 첫 번째 셀에 다음을 입력하고 Shift+Enter 키를 누릅니다. OpenCV 버전(2020.08.17 시점에서 4.1.2)이 표시되면 OK입니다.
%matplotlib inline # matplotlibの出力をインライン(ポップアップじゃない)にする。
import cv2 # opencvの読み込み
import matplotlib.pyplot as plt # matplotlibを読み込んで、pyplotを pltという名前で使う。
print(cv2.__version__) # opencvのバージョンを表示して、読み込みを確認する。
# 出力
# 4.1.2

3. 필요한 파일 준비



htps : // 기주 b. 코 m / 오렌지 cv / 오페인 cv / t 레에 / 마 s r / data /에서 학습 된 데이터를 다운로드합니다.



먼저 고양이의 얼굴을 인식하기 위해 haarcascade_frontalcatface.xml 파일을 클릭합니다.


원시를 마우스 오른쪽 버튼으로 클릭하여 파일을 저장합니다.


4. 파일을 Colaboratory로 업그레이드합니다.



다음 코드를 두 번째 셀에 쓰고 Shift+Enter 키를 누릅니다.
from google.colab import files # colaboratoryのライブラリからファイル操作を使用する。
f = files.upload() # ファイルをアップロードする。

파일 선택을 눌러 파일을 업로드합니다.


파일은 다음 두 가지를 올립니다.
  • 변환하려는 이미지 파일
  • haarcascade_frontalcatface.xml (3. 필요한 파일을 준비하고에서 다운로드 한 파일)

  • 아래 코드를 다음 셀에 쓰고 Shift + Enter를 눌러 실행하여 업로드 한 파일의 이름이 출력되는지 확인하십시오 (이 예의 경우 변환하려는 이미지의 파일 이름은 .jpg"입니다).
    !ls # システムコマンドのlsを実行して、ファイルがアップされているか確認する。
    # 出力
    # haarcascade_frontalcatface.xml    IMG_20200808_181512.jpg  sample_data
    

    5. OpenCV로 이미지 불러오기



    새 셀에 다음 코드를 작성하고 Shift+Enter를 눌러 실행합니다.
    # ファイル名(IMG_20200808_181512.jpg)は、自分の画像のファイル名に変えてください。
    img = cv2.imread("./IMG_20200808_181512.jpg") # 画像の読み込み
    show_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) # 表示のためBGRをRGBに変換する。
    plt.imshow(show_img) # matplot.libを用いて読み込んだ画像を表示します。
    

    다음과 같이 업로드한 이미지가 표시되면 OK입니다.
    또한 업로드 파일은 어느 정도 시간이 지나면 Colaboratory 내에서 사라져 버리므로 그 때는 다시 업로드하십시오.



    6. 얼굴 인식하고 얼굴 위치에 원과 화살표를 그립니다.



    다음 코드를 새 셀에 쓰고 Shift+Enter를 눌러 실행합니다. cv2.circle, cv2.putText에 대한 자세한 내용은 OpenCV 그리기 기능 등을 참조하십시오.
    # 学習済みファイルからモデルを生成
    face_cascade = cv2.CascadeClassifier('./haarcascade_frontalcatface.xml')
    # グレー画像を生成
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 顔認識
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    
    # 認識結果でループする x,y:顔矩形の左上, w,h:顔矩形の幅と高さ
    for (x,y,w,h) in faces:
      # 顔の位置に丸を描く
      img = cv2.circle(img,(x+int(w/2),y+int(h/2)),int(max(w/2,h/2)),(0,0,255),12)
      # 文字によって矢印を描く
      cv2.putText(img,"<---",(x+w,y+int(h/2)),
        cv2.FONT_HERSHEY_SIMPLEX,8,(0,0,255),32,cv2.LINE_AA)
    
    # 描画用にRGBに変換 
    show_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    # 結果の描画
    plt.imshow(show_img)
    

    다음과 같이 고양이의 얼굴에 원이 쓰여지고 화살표가 붙으면 성공입니다.

    단지 얼굴을 인식할 수 없는 때도 있습니다. 예를 들어, 이 이미지에서는, 뒤에 삼모 고양이씨가 이쪽을 향하고 있습니다만, 그 얼굴은, 인식할 수 없습니다.

    7. OpenCV의 다른 기능



    OpenCV-Python 자습서 등의 사이트를 참조해 주십시오.

    좋은 웹페이지 즐겨찾기