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

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

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

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

Python

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

Q&A

解決済

1回答

1080閲覧

Python OpenCVにおけるウインドウに表示されている映像を処理する方法について

Li3

総合スコア10

OpenCV

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

Python

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

0グッド

0クリップ

投稿2023/03/02 14:03

編集2023/03/03 04:45

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

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

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

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

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

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

meg_

2023/03/03 00:40

> ウインドウで表示している映像データを取得したい > この取得するデータをウインドウ内の映像に変更する事 「ウインドウ」とはcv2.imshow()を実行した後に表示されるもののことを指していますか?それともモニターで表示している画面を指していますか?
Li3

2023/03/03 02:10

meg様 コメントありがとうございます。 ウインドウとはcv2.imshow()した後の表示ではありません。 一般的なもの、今回ですとLonelyScreenと呼ばれるミラーリングソフトのウインドウを想定しています。 説明不足で申し訳ございません。
fana

2023/03/03 02:53 編集

いまいち話がわかりませんが,「opencv スクリーンショット」とかで検索してみてはどうでしょうか. (スクリーンショットを撮ることに関してはOpenCV自体にはそういう機能は無く,そこは別の何かを使う→得られたデータをMatに変換する みたいなことになると思います)
meg_

2023/03/03 03:41

質問は編集できますので、詳細な説明は質問に追記お願いします。 そのソフト(LonelyScreen)のことは存じなかったのですが「ホームネットワークを介してiPhone/iPod touch/iPadの画面をWindowsのデスクトップへ表示するツール」のことで合ってますか?その場合はopencvのコードとどう関係してくるのでしょうか?
Li3

2023/03/03 04:40

ソフトに関してはご認識の通りのものです。わざわざソフトを記載した意図としてはウインドウとして起動しているソフトウェアもなんらかの区分がありOpenCVのコーディングにおいて考慮すべき内容になる可能性もあるのかなと思い記載しました。(素人ですみません)詳細な説明に関してはイメージ図を追記致しました。
meg_

2023/03/03 04:56

fanaさんのコメントにあるようにPC画面のスクリーンショットを撮るのが良いのではないでしょうか?具体的な方法は「python 画面 録画」とかで検索すると様々な方法があるのでお好きなモジュールと組み合わせれば良いかと思います。
guest

回答1

0

ベストアンサー

OBS Studio というソフトのvirtual camera機能を使用されると楽かもしれません。
OBS Studio をインストールし、多少設定を入れると virtual camera として、
windows上のウインドウなどをUSBカメラなどと同様に扱えるようになります。

投稿2023/03/03 06:46

k5kkkkk

総合スコア102

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

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

Li3

2023/03/13 06:11

連絡遅くなり申し訳ありません。 OBS Studioの仮想カメラで実現する事ができました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問