前提・実現したいこと
OpenCVとKerasを利用して、webカメラに写されたイラストの顔を検知し判別するプログラムを作りました。
イラストを判別したときにイラストの説明文を書いた画像を画面の下あたりに貼り付けたいのですが何かいい方法を知っている方教えていただきたいです。。
イラストの顔を判別するプログラムコードは以下のホームページとほぼ同じ物を書いています
↓ ↓
https://ai-coordinator.jp/real-time-person-detection
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Python
1import gakusyu2 as face 2import sys, os 3from keras.preprocessing.image import load_img, img_to_array 4import numpy as np 5import cv2 6import time 7 8cascade_path = 'C:\Users\Taisei\Anaconda3\envs\OpenCV\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml' 9cascade = cv2.CascadeClassifier(cascade_path) 10cam = cv2.VideoCapture(1) 11color = (255, 0, 255) 12 13image_size = 32 14categories = ["monariza","Lady with an Ermine","Girl with a Pearl Earring"] 15 16def main(): 17 18 while(True): 19 ret, frame = cam.read() 20 facerect = cascade.detectMultiScale(frame, scaleFactor=1.3, minNeighbors=2, minSize=(10, 10)) 21 22 for rect in facerect: 23 cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), color, thickness=2) 24 x = rect[0] 25 y = rect[1] 26 width = rect[2] 27 height = rect[3] 28 29 cv2.imwrite("frontalface.png", frame) 30 img = cv2.imread("frontalface.png") 31 32 dst = img[y:y+height, x:x+width] 33 cv2.imwrite("output.png", dst) 34 cv2.imread("output.png") 35 X = [] 36 37 img = load_img("output.png", target_size=(image_size,image_size)) 38 in_data = img_to_array(img) 39 40 X.append(in_data) 41 X = np.array(X) 42 X = X.astype("float") / 256 43 44 model = face.build_model(X.shape[1:]) 45 model.load_weights("C:\python code\system2.hdf5") 46 47 pre = model.predict(X) 48 print(pre) 49 if pre[0][0] > 0.95: 50 print(categories[0]) 51 text = categories[0] 52 font = cv2.FONT_HERSHEY_PLAIN 53 cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, color, 2, cv2.LINE_AA) 54 elif pre[0][1] > 0.95: 55 print(categories[1]) 56 text = categories[1] 57 font = cv2.FONT_HERSHEY_PLAIN 58 cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, color, 2, cv2.LINE_AA) 59 elif pre[0][2] > 0.95: 60 print(categories[2]) 61 text = categories[2] 62 font = cv2.FONT_HERSHEY_PLAIN 63 cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, color, 2, cv2.LINE_AA) 64 65 cv2.imshow("Show FLAME Image", frame) 66 #time.sleep(0.1) 67 68 k = cv2.waitKey(1) 69 70 if k == ord('q'): 71 break 72 73 cam.release() 74 cv2.destroyAllWindows() 75 76if __name__ == '__main__': 77 main()
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
Keras 2.3.1
TensorFlow 2.0.0
OpenCV 4.1.0
Python 3.6.8
回答1件
あなたの回答
tips
プレビュー