前提・実現したいこと
機械学習用画像の準備のために大量の画像から顔の部分だけをトリミングして保存しようと試みています。
トリミング前の画像はmodelフォルダに保存しており、トリミングした顔画像をsaveフォルダに保存しようとしています。
以下のプログラムコードを実行したところエラーメッセージは表示されなかったのですが、saveフォルダの中にトリミングされた顔の画像が1枚も保存されていませんでした。
発生している問題・エラーメッセージ
C:\Users\Taisei\Anaconda3\envs\opencv\lib\site-packages\numpy\_distributor_init.py:32: UserWarning: loaded more than 1 DLL from .libs: C:\Users\Taisei\Anaconda3\envs\opencv\lib\site-packages\numpy.libs\libopenblas.PYQHXLVVQ7VESDPUVUADXEVJOBGHJPAY.gfortran-win_amd64.dll C:\Users\Taisei\Anaconda3\envs\opencv\lib\site-packages\numpy.libs\libopenblas.TXA6YQSD3GCQQC22GEQ54J2UDCXDXHWN.gfortran-win_amd64.dll stacklevel=1) ↑ここで実行が終わってしまいます。
###ソースコード
python
1import cv2 2import matplotlib.pyplot as plt 3import numpy as np 4import sys, os 5from PIL import Image 6 7 8#入力ファイルのパスを指定 9in_jpg = "C:\python code\model" 10out_jpg = "C:\python code\save" 11 12#リストで結果を返す関数 13def get_file(dir_path): 14 filenames = os.listdir(dir_path) 15 return filenames 16 17pic = get_file(in_jpg) 18 19for i in pic: 20 # 画像の読み込み 21 image_gs = cv2.imread(in_jpg + i) 22 23 # 顔認識用特徴量ファイルを読み込む --- (カスケードファイルのパスを指定) 24 cascade = cv2.CascadeClassifier('C:\Users\Taisei\Anaconda3\envs\OpenCV\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml') 25 26 # 顔認識の実行 27 face_list = cascade.detectMultiScale(image_gs,scaleFactor=1.1,minNeighbors=1,minSize=(1,1)) 28 29 # 顔だけ切り出して保存 30 no = 1; 31 for rect in face_list: 32 x = rect[0] 33 y = rect[1] 34 width = rect[2] 35 height = rect[3] 36 dst = image_gs[y:y + height, x:x + width] 37 save_path = out_jpg + '/' + 'out_(' + str(i) +')' + str(no) + '.jpg' 38 39 #認識結果の保存 40 a = cv2.imwrite(save_path, dst) 41 plt.show(plt.imshow(np.asarray(Image.open(save_path)))) 42 print(no) 43 no += 1 44
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
参考にしたサイトの方はmacOSでしたが私はWindows10なのでそこで問題が発生しているのかもしれません。
回答1件
あなたの回答
tips
プレビュー