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
Reference
이 문제에 관하여(Python OpenCV에서 여러 이미지가 포함 된 부분을 감지/표시했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/anzanshi/items/5ce80d3e5daa5b247d34텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)