前提・実現したいこと
あらかじめ指定した処理時間で、if name == 'main':の処理を打ち切りたいのですがどうすれば良いですか?
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
import
1 2if __name__ == '__main__': 3 # 定数定義 4 ESC_KEY = 27 # Escキー 5 INTERVAL= 33 # 待ち時間 6 FRAME_RATE = 30 # fps 7 r=0 8 #カウンタ用演算子 9 ORG_WINDOW_NAME = "org" 10 11 12 DEVICE_ID = 0 13 14 # 分類器の指定 15 cascade_file = "C:/Users/wakimoto/Anaconda2/Library/etc/haarcascades/haarcascade_frontalface_alt.xml" 16 cascade = cv2.CascadeClassifier(cascade_file) 17 18 19 # カメラ映像取得 20 cap = cv2.VideoCapture(DEVICE_ID) 21 #カメラ映像録画の用意 たぶん2フレーム/秒が限界 22 fourcc = cv2.VideoWriter_fourcc(*'WMV1') 23 out = cv2.VideoWriter('output.wmv',fourcc, 2.0, (640,480)) 24 25 26 # 初期フレームの読込 27 end_flag, c_frame = cap.read() 28 height, width, channels = c_frame.shape 29 30 # ウィンドウの準備 31 cv2.namedWindow(ORG_WINDOW_NAME) 32 33 34 # 変換処理ループ 35 while end_flag == True: 36 37 ret, frame = cap.read() 38 color = (0, 0, 255) 39 40 # 画像の取得と顔の検出 41 img = c_frame 42 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 43 #検出器の最小サイズを決める 44 face_list = cascade.detectMultiScale(img_gray, minSize=(1, 1) ) 45 46 # フレーム表示 47 cv2.imshow(ORG_WINDOW_NAME, c_frame) 48 49 frame = cv2.flip(frame,0) 50 51 # write the flipped frame 52 53 54 55#物体認識(顔認識)の実行 56#image – CV_8U 型の行列.ここに格納されている画像中から物体が検出されます 57#objects – 矩形を要素とするベクトル.それぞれの矩形は,検出した物体を含みます 58#scaleFactor – 各画像スケールにおける縮小量を表します 59#minNeighbors – 物体候補となる矩形は,最低でもこの数だけの近傍矩形を含む必要があります 60#flags – このパラメータは,新しいカスケードでは利用されません.古いカスケードに対しては,cvHaarDetectObjects 関数の場合と同じ意味を持ちます 61#minSize – 物体が取り得る最小サイズ.これよりも小さい物体は無視されます 62 facerect = cascade.detectMultiScale(img_gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1)) 63 64 #facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=3, minSize=(10, 10), flags = cv2.cv.CV_HAAR_SCALE_IMAGE) 65 66 67 68 if len(facerect) > 0: 69 #検出した顔を囲む矩形の作成 70 for rect in facerect: 71 cv2.rectangle(img, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), color, thickness=2) 72 #フレームごとに枠の分だけカウントが増える 73 r +=1 74 75 76 # フレーム表示(枠つけた後) 77 cv2.imshow(ORG_WINDOW_NAME, c_frame) 78 79 #フレーム書き込み 80 out.write(c_frame) 81 # Escキーで終了 82 key = cv2.waitKey(INTERVAL) 83 if key == ESC_KEY: 84 break 85 86 # 次のフレーム読み込み 87 end_flag, c_frame = cap.read() 88 89 # 終了処理 90 cv2.destroyAllWindows() 91 out.release() 92 cap.release() 93 94 #全フレーム分の検出数がprintされる 95 print(r) 96
試したこと
補足情報(FW/ツールのバージョンなど)
引用したコードはWebカメラで顔検出した数を数えるコードです。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/29 09:26
2018/01/29 09:32