##質問内容
以下のコードを実行すると,このようなエラーが出ます.
##エラー結果
UnboundLocalError: local variable 'image_rgb' referenced before assignment
##コード
Python
1 2 #映像を表示 3 cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) 4 5 #顔の検出器を作成 6 face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml") 7 8 9 while True: 10 11 ret, frame = cap.read() 12 13 #画像にする際のサイズを変更する 14 frame = cv2.resize(frame,(width, height)) 15 16 #グレイスケールに変換 17 frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 18 19 20 #顔認証を実行 21 face_list = face_cascade.detectMultiScale(frame_gray, minNeighbors=20) 22 23 #--------------------------------------------------------------------------- 24 25 #認証した部分に印をつける(枠で囲む) 26 for (x,y,w,h) in face_list: 27 28 #赤を用意 29 red = (0,0,255) 30 31 #顔の部部を囲む 32 cv2.rectangle(frame, (x,y), (x+w, y+h), red, 1) 33 34 #顔の部分のみ取り出す 35 trim_face = frame[y:y+h,x:x+w] 36 37 #RGBに変換する(OpenCVのBGRをRGBに変換する) 38 image_rgb = cv2.cvtColor(trim_face,cv2.COLOR_BGR2RGB) 39 40 #--------------------------------------------------------------------------- 41 42 #pillowに変換 43 change_pillow = Image.fromarray(image_rgb) 44 45 46 #OpenCVのRGBからpillowのRGBに変換する 47 rgb_pillow = change_pillow.convert("RGB") 48 49 50 #画像のサイズをリサイズする(顔のみの画像) 51 resize_face = rgb_pillow.resize((image_size, image_size)) 52 53 54 #顔の部分のみの画像を数値に変換する 55 data = np.asarray(resize_face) 56 57 #リストを用意 58 X = [] 59 60 #Xにdataを入れる 61 X.append(data) 62 63 #XをTensorFlowが扱いやすいようにNumpy型に変換する 64 X = np.array(X) 65 66 #ニューラルネットワークのモデル関数を呼び出す 67 model = neural_model() 68 69 #画像をニューラルネットワークのモデルから予測する 70 result = model.predict([X])[0] 71 72 #一番値の大きい配列の添え字を返す 73 pred = result.argmax() 74 75 76 #もし,"my_face"なら, 77 if face_classes[pred] == "my_face": 78 79 #映像の顔の部分を青色で囲む 80 for (x,y,w,h) in face_list: 81 82 #青色を準備 83 blue = (255,0,0) 84 85 #顔を枠で囲む 86 cv2.rectangle(frame, (x, y), (x+w,y+h), blue, 2) 87 88 cv2.imshow("Detect_Face", frame) 89 90 #もし,Enterキーが押されたら終了する 91 exit_wind = cv2.waitKey(1) 92 93 if exit_wind == 13: 94 break 95
回答1件
あなたの回答
tips
プレビュー