質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2722閲覧

PythonのOpenCVでUSBカメラ画像の取得が突然真っ暗になる

TakakiKuwabara

総合スコア38

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2グッド

2クリップ

投稿2017/10/12 00:43

Python3でOpenCVを使ったアプリの開発を行なっています。
やっていることはUSBカメラから画像を取得する一般的な手法です。
カメラ画像を取得して画像解析を行うプログラムですが、数時間動かしていると突然画像が真っ暗になります。
最初は画像解析の部分を疑っていたのですが、調査をするうちに cap.read() まわりに問題があるようです。
cap.read() の部分ですが、この時一緒に取得できるフラグも true になっています。

わかる方がいらっしゃれば、ご教授願います。

Python3

1# カメラをキャプチャする 2cap = cv2.VideoCapture(cam_no) 3 4# 取れてるかチェック 5ret, test = cap.read() 6 7while True: 8 # カメラから画像を取得 9 # retは画像を取得成功フラグ 10 ret, image = cap.read() 11 12 # 画像が取得できない場合はスキップ 13 if ret: 14 15 # モード取得 16 mode = self.get_mode(line_id) 17 18 try: 19 # 画像を解析(別のファンクション) 20 self.analyze_image(line_id, 3, image) 21 22 except Exception as e: 23 print ('analyze error: ' + str(e)) 24 25 26 # FPSを調整 27 time.sleep(CONFIG.CAPTURE_INTERVAL)
manzyun👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/12 10:02

このコードで定義されていない関数をコメントアウトして、その状態で数時間回して(ただただ画像を垂れ流すだけで)も画面が真っ暗になりますか?処理が重すぎて発熱してクラッシュかな、と感じたためです。OSが落ちたのか、Pythonが落ちたのかもあるとより良いと思います。
TakakiKuwabara

2017/10/16 03:33

pythonは動いています。メモリリークも特にないです。同様の症状が英語記事で数件見られましたが、そちらでも特別解決方法が見つかっているわけでもないようでした。
guest

回答1

0

ベストアンサー

初めの数フレームはカメラの準備で黒くなるのは見ますが、数時間たった後ですよね…

OpenCVは人数・使用時間ともに膨大な数になるので、連続運用でOpenCVがおかしくなって~、という可能性は低いと思います。一方、どのようなカメラか分かりませんが、今使用中のカメラの数・運用時間はOpenCVの実績よりも圧倒的に小さいはずです。

Google検索でざーっと数十件見ましたが、使用中のカメラが数時間の連続使用に耐えられないのが一番怪しい気がします。

以下、おまじない

  • 使用中の製品or製造ロットが長時間運用に向いていない
  • ドライバがおかしい→ドライバを再インストール
  • OpenCVのバージョンを落とす(3.x→2.x)
  • cv2.waitKey(1) でスリープもどき
  • カメラが発熱して熱暴走→カメラを冷やす

投稿2017/10/16 10:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakakiKuwabara

2017/10/18 01:48

logicoolのc920というwebカメラです。 長時間運用はpythonではない別件で実証済みです。 ドライバも同様です。 OpenCVのバージョンはできれば変えたくないところですが。。。 とりあえずは1時間ごとにVideoCaptureをRelaseして、再度生成する処理を加えることで回避できそうです。
退会済みユーザー

退会済みユーザー

2017/10/18 10:41

> とりあえずは1時間ごとにVideoCaptureをRelaseして、再度生成する処理を加えることで回避 このような対応は初めて聞きました。どこにも書いて無さげですので、貴重なノウハウですね。 私も覚えておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問