###前提・実現したいこと
OpenCV3.1.0でMILを使用し動体追跡を行いたいと考えています。
トラッカーインスタンス初期化の際にメモリ不足エラーが発生しています。
メモリの増設以外の方法でエラーを解決する方法がないか教えて頂けないかと考えております。
###発生している問題・エラーメッセージ
上記ソースを実行した際に
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc 中止 (コアダンプ)
###該当のソースコード
python
1import numpy as np 2import cv2 3 4cv2.namedWindow("tracking") 5camera = cv2.VideoCapture(0) 6bbox = (638.0,230.0,56.0,101.0) 7tracker = cv2.Tracker_create("MIL") 8init_once = False 9 10while camera.isOpened(): 11 ok, image=camera.read() 12 if not ok: 13 print ('no image read') 14 break 15 16 if not init_once: 17 ok = tracker.init(image, bbox) 18 init_once = True 19 20 ok, newbox = tracker.update(image) 21 print (ok, newbox) 22 23 if ok: 24 p1 = (int(newbox[0]), int(newbox[1])) 25 p2 = (int(newbox[0] + newbox[2]), int(newbox[1] + newbox[3])) 26 cv2.rectangle(image, p1, p2, (200,0,0)) 27 28 cv2.imshow("tracking", image) 29 k = cv2.waitKey(1) & 0xff 30 if k == 27: 31 break # esc pressed
###試したこと
http://sekitaka-1214.hatenablog.com/entry/2014/06/08/065448
上記のサイトなどを参考にして切り分けた結果
python
1ok = tracker.init(image, bbox)
上記のトラッカーインスタンスを初期化している箇所でメモリ不足のエラーが発生している事がわかりました。
他にメモリを消費しているタスクがあるようだったのでOSの再起動を行い、再度実行しましたが、状況は変わりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Ubuntu 16.04.1
OpenCv 3.1.0
Python 3.5.2
メモリ容量4GB
あなたの回答
tips
プレビュー