以下にOpenCVを使った簡単な例を示しておきます。
コメントがついているところは各々自分のモデルに合うように変えて頂ればよいと思います。
基本的にはOpenCVでBoudingBoxの描画や切り抜きを行うのが簡単です。
OpenCV詳細な使い方は公式サイトのチュートリアルに書いてあります。
python
1"""
2model: kerasの分類モデル
3detector: 物体検出モデル
4"""
5
6import cv2
7import numpy as np
8
9(_, W, H, C) = model.input_shape
10
11image = cv2.imread('sample001.jpg')
12boxes = detector.detect(image) # detectメソッドで画像中のBoundingBoxのリストを返すと想定
13
14for (x, y, w, h) in boxes: # 各BoundingBoxが(x座標,y座標,幅,高さ)になっていると想定
15 box = image[y:y+h, x:x+w] # 画像からBoundingBoxを切り抜き
16 box = cv2.resize(box, (W, H)) # BoundingBoxをmodelに入力できるようリサイズ
17 box = np.expand_dims(box, axis=0)
18 predict = model.predict(box)[0]
19 pred_class = np.argmax(predict) # 予測結果
20 text = 'class={}'.format(pred_class))
21 cv2.rectangle(image, (x, y), (x+w, y+h), (255,0,0), thickness = 2) # BondingBoxを描画
22 cv2.putText(image, text,(x,y), font, 1,(0,255,0),1,cv2.LINE_AA) # 分類結果を描画
23
24cv2.imshow('sample001', image)
25
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/01 05:18