Python OpenCVにおけるウインドウに表示されている映像を処理する方法について
実現したいこと
閲覧頂きありがとうございます。
使用しているコードは以下に記載しています。
現状OpenCVライブラリにてUSBカメラで取得した映像を
“ret, frame”部分で取得し画像処理しています。
■実現したいこと
ウインドウで表示している映像データを取得したい(OS : Windows)
-この映像データは.mp4などの有形の動画データではありません
↓イメージ図
前提
当方初心者につき説明が拙い部分があると思いますので
不明な箇所に関してはご指摘いただけますと幸いです。
以下の[1]と[2]に共通してマストとしている部分に関しては
他のプログラムとの兼ね合い上、“ret, frame”として取得したいと考えます。
[1]一般的に以下の方法で取得するデータを選択すると思います。
最も早い話、この取得するデータをウインドウ内の映像に変更する事は可能でしょうか。
可能であれば指定する方法をご教示いただきたいです。
———————————————————————-
#動画ファイル
cap = cv2.VideoCapture('video.mp4')
#USBカメラ
cap = cv2.VideoCapture(1)
while True :
ret, img = cap.read()
cv2.imshow('Video', img)
———————————————————————-
[2]上記の方法を取ることができない場合、どのような考え方をするべきでしょうか。
個人的には以下の方法で実現はできるのではないかと考えますが、
非効率かつ”imshow”を繰り返し行った際、コマ送りに見えるのではないかと懸念しています。
以下をご教示頂けますと幸いです。
・以下の方法で最も映像が滑らかに表示されるコード
・以下の方法で映像の表示が難しい場合、代替できる方法
①ウインドウ内のスクリーンショットを撮る
↓
②ディレクトリに保存
↓
③ディレクトリから画像を読み込む→画像処理
↓
繰り返し
該当のソースコード
Python
1 # USBカメラ 2 cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) 3 4 while True: 5 6 ret, frame = cap.read() 7 8 if ret is False: 9 print("cannot read image") 10 break 11 12 # 画面に表示する 13 cv2.imshow("Video", frame) 14 15 # キーボード入力待ち 16 key = cv2.waitKey(1) & 0xFF 17 18 # qが押された場合は終了する 19 if key == ord('q'): 20 #ser.close() 21 22 break 23
補足情報(FW/ツールのバージョンなど)
opencv-contrib-python 4.2.0.34
opencv-python 4.2.0.34
回答1件
あなたの回答
tips
プレビュー