Python OpenCV에서 여러 이미지가 포함 된 부분을 감지/표시했습니다.

배경



어떤 이미지에서 여러 얼굴을 감지하고 싶습니다! !
그래서,
폴더에 저장된 여러 얼굴을 읽고,
원 화상으로부터 검출해, 강조 표시시켜 보았습니다.

환경



MacOS Mojave ver10.14.4
Anaconda Navigator 1.9.7
※Anaconda의 인스톨은, 여기 를 참고로
JupiterNotebook 5.4.0
OpenCV 3.4.2
※OpenCV의 인스톨은 이전 기사

절차



정책



· 검색하려는 이미지를 폴더에서 가져옵니다.
・검색 대상 화상에 대해서, 검색을 거쳐 일치한 부분을 사각형으로 둘러싸고 표시시킨다

구현



먼저 다양한 라이브러리를 가져옵니다.
cv2 : OpenCV를 사용하기 위해
glob : 폴더의 파일을 얻기 위해
numpy: 일치율 계산을 수행하기 위해
matopolib : 그래프를 표시하기 위해
import cv2  #OpenCVをインポート
import glob
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline #JupiterNotebookに表示するため

폴더에 있는 파일 얻기

files =glob.glob("./ImagesFolder/temp_template/*") #検索画像保管フォルダパスを指定

이번 폴더의 내용을 확인한다.
(이번에는 이하의 모녀 2명의 화상 파일을 넣고 있습니다)

temp_saki.png

temp_saki2.png


imread를 사용하여 검색할 이미지 로드

image = cv2.imread('./ImagesFolder/temp/temp_moto.png')



검색하고 싶은 이미지분만, 검색을 거쳐 일치했을 경우에,
cv2.rectangle로 사각형으로 둘러싸기(반복 처리)

for fname in files:    
   #検索したい画像を読み込む
    template = cv2.imread(fname) 
    #検索対象画像内で画像が一致するかを検索
    result = cv2.matchTemplate(image, template, cv2.TM_CCORR_NORMED)
    # 一致部分を□で囲む
    th, tw = template.shape[:2]
    threshold = 0.99
    loc = np.where(result >= threshold)
    for pt in zip(*loc[::-1]):
        cv2.rectangle(image, pt, (pt[0] + tw, pt[1] + th), (255,0,255), 2)

Matpolib의 imshow 이미지 표시
OpenCV로 취득한 화상은 BGR 데이터 배열, Matplotlib로 호출하는 경우는 RGB 데이터 배열이므로, 변환할 필요가 있는 것에 주의!
image2 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #データ配列の変換
plt.imshow(image2)

실행 결과



어머니와 딸의 2명의 얼굴이 인식되고 있는 것을 확인할 수 있습니다!




이미지를 저장하려면:
cv2.imwrite('./imagesFolder/temp/result_temp.png', image)

참고



"초보자가 python Anaconda GUI에서 쉽게 OpenCV를 설치해 본다"
htps : // 이 m / 안산시 / ms / 88df7db49f77f65fbf
"Python OpenCV에서 이미지의 일부가 일치하는지, 판정 결과를 반환해 보았다"
htps : // 코 m / 안산시 / ms / 82fc4c7 a3 a 1f84137 Ae f

좋은 웹페이지 즐겨찾기