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

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

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

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

Python

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

Q&A

解決済

1回答

6394閲覧

opencvの処理をリアルタイムに

uriuri

総合スコア47

OpenCV

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

Python

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

0グッド

1クリップ

投稿2018/07/20 04:00

編集2018/08/06 05:30

処理が途中でとまり、
処理後フォルダにaviファイルは保存されるのですが2秒ほどの動画となってしまいます
動画を撮り続けて自分で止めたい場合どのようにすればよいでしょうか
アドバイスお願いします。

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

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

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

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

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

coco_bauer

2018/07/20 08:14

リアルタイムでエッジ検出をするのは無理があると思います。参考にされた[https://qiita.com/hitomatagi/items/12a2eceaf65f142ec3df]には、リアルタイムで動画をキャプチャーする事と、静止画のエッジ検出をする事が別々に説明されています。それらを混ぜるのは無茶ではないでしょうか。
guest

回答1

0

ベストアンサー

リアルタイムでエッジ処理をして動画ファイルを作成します。
処理の流れは以下のとおり

1.カレントディレクトリ直下に新しくフォルダを作成しそのフォルダに移動する。
2.webカメラに接続
3.1フレームを読み込みリアルタイムで画像加工処理
4.処理したフレームを表示とともに画像として保存(フレームごとに画像は保存し蓄積される)
5.3と4を繰り返す。「esc」ボタンを押すと終了処理に入る
6.今まで保存した画像から動画ファイルを作成

python

1import cv2 2import numpy as np 3import os 4import datetime 5 6##カレントディレクトリのパスを取得 7current = os.getcwd() 8##ディレクトリ作成 9now = datetime.datetime.now() 10dir_name = "/IMG_{0:%m%d%H%M}".format(now) 11if os.path.isdir(current + dir_name) == False: 12 os.mkdir(current + dir_name) #make directory 13os.chdir(current + dir_name) #move to directory 14 15# VideoCaptureのインスタンスを作成する。 16cap = cv2.VideoCapture(0) 17cap.set(cv2.CAP_PROP_FPS, 30) 18 19#フレーム数カウント用 20count = 1 21 22while True: 23 # VideoCaptureから1フレーム読み込む 24 ret, frame = cap.read() 25 w, h = frame.shape[0] , frame.shape[1] 26 27 # 加工なし画像を表示する 28 cv2.imshow('Raw Frame', frame) 29 30 # 画像加工処理 31 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 32 blur = cv2.GaussianBlur(gray,(11,11),0) 33 _, binary = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) 34 nega = cv2.bitwise_not(binary) 35 canny = cv2.Canny(nega, 100, 200) 36 #2値画像をrgbに変換 37 backtorgb = cv2.cvtColor(canny,cv2.COLOR_GRAY2RGB) 38 39 40 # 加工済の画像を表示する 41 cv2.imshow('Edited Frame', backtorgb) 42 43 # フレームを保存 44 filename = "IMG_{}.jpg".format(count) 45 cv2.imwrite(filename, backtorgb) 46 count += 1 47 48 # キー入力を1ms待って、k が27(ESC)だったらBreakする 49 k = cv2.waitKey(1) 50 if k == 27: 51 break 52 53# キャプチャをリリースして、ウィンドウをすべて閉じる 54cap.release() 55cv2.destroyAllWindows() 56 57 58# 連番画像から動画作成 59fourcc = cv2.VideoWriter_fourcc('m','p','4','v') 60video = cv2.VideoWriter('video.mp4', fourcc, 20.0, (h, w)) 61for i in range(1, count): 62 img = cv2.imread("IMG_{}.jpg".format(i)) 63 img = cv2.resize(img, (h,w)) 64 video.write(img) 65 66video.release() 67 68print("完了") 69

投稿2018/08/09 07:55

Ryupe

総合スコア426

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問