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

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

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

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

OpenCV

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

Python

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

Q&A

0回答

355閲覧

pythonのopencv における処理について

sou0713

総合スコア0

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

OpenCV

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

Python

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

0グッド

0クリップ

投稿2022/01/13 07:23

python

1#coding:utf-8 2import cv2 3import time 4import pygame #音出す 5 6 7 8#音出す関数 9def add_sound(): 10 sound_file="door_chime0.mp3" 11 pygame.mixer.init() 12 pygame.mixer.music.load(sound_file) 13 pygame.mixer.music.play(1) 14 time.sleep(3.0) 15 pygame.mixer.music.stop() 16 17 18 19 20 21 22def fleez_alarm(): 23 24 cap=cv2.VideoCapture('sample.mp4') 25 26 count1=0 27 count2=0 28 count3=0 29 count4=0 30 31 while True: 32 ret,frame=cap.read() 33 #frame=cv2.flip(frame,1) 34 gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 35 36 fps = cap.get(cv2.CAP_PROP_FPS)#フレームレート 37 w = cap.get(cv2.CAP_PROP_FRAME_WIDTH)#フレームの幅 38 h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)#フレームの高さ 39 frame_count = cap.get(cv2.CAP_PROP_FRAME_COUNT)#フレーム数 40 sec = frame_count / fps#動画の時間 41 42 43 pic0=frame[0:int(h)//2,0:int(w)//2] 44 pic1=frame[0:int(h)//2,int(w)//2+1:int(w)] 45 pic2=frame[int(h)//2+1:int(h),int(w)//2+1:int(w)] 46 pic3=frame[int(h)//2+1:int(h),0:int(w)//2] 47 48 if not ret: 49 break 50 51 52 if pic0.mean()<10: 53 count1+=1 54 if count1>=120 and count1%120==0: 55 add_sound() 56 57 if count1>=120: 58 cv2.putText(frame,'SV1Error',(10,70),cv2.FONT_HERSHEY_PLAIN,5.5,(0,0,255),1,cv2.LINE_AA) 59 60 61 else: 62 count1=0 63 64 if pic1.mean()<10: 65 count2+=1 66 if count2>=120 and count2%120==0: 67 add_sound() 68 if count2>=120: 69 cv2.putText(frame,'SV2Error',(1000,70),cv2.FONT_HERSHEY_PLAIN,5.5,(0,0,255),1,cv2.LINE_AA) 70 else: 71 count2=0 72 73 74 75 76 cv2.imshow('Test',frame) 77 78 key=cv2.waitKey(30) 79 if key==27: 80 break 81 82 cap.release() 83 cv2.destroyAllWindows() 84 85 86if __name__=='__main__': 87 88 fleez_alarm()

前提・実現したいこと

初質問となります。python初心者です。
現在、ある動画を4分割にしてその一つ一つの区分に対してOpenCVにおける処理をしたいと考えています。具体的にはその一つの区分に対する輝度の平均値がある一定時間下回ればアラーム音と警告文を表示させるイメージです。エラーは出ず処理されるのですが、処理が重いのか動画が途中でフリーズしてしまいます。countを定義してプラスしていく方式がよろしくないのでしょうか?稚拙な質問ですが回答の方をして頂けると嬉しいです。将来的には4つの区分に対して輝度の比較なども同じシステム内に組み込みたいと考えております。

発生している問題・エラーメッセージ

該当のソースコード

試したこと

色々ググったのですがあまりわかりませんでした。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/01/14 09:44

teratailの不具合でこのコメントを書いたあと、質問の回答を読めるかわかりませんがご了承ください。 コードを見て怪しいのはpygameです。 1. pygameをコメントアウトしてシンプルにした状態で動作確認をする。 2. whileの中にprint("point A")、print("point B")、print("point C")みたいな感じでヘンゼルとグレーテルのように文字列を表示させて追跡する 3. 1.2の策をしたうえでどの辺が怪しいか行数と直前のコードをコメント欄に回答する これでもし私が質問の回答を見れなくても誰か質問を見られた人でわかる人なら回答をもらえるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問