OpenCV初心者です。AVI形式の動画を再生しながら、Kinectからの映像を表示するというWindowsフォームアプリケーションを作っています。
開発環境はVisual C++ 2010 Express、OpenCV2.3.1で、KinectはOpenNIで動かしています。
現在、どちらか一方の映像が動いているとき、もう片方の映像が止まってしまうという問題が発生しています。AVI動画もKinectからの映像も同時に動いているようにするにはどうすればよいでしょうか。
以下にソースコードを示します。
#include "stdafx.h"
#include "Form1.h"
#include <stdio.h>
#include <opencv2\opencv.hpp>
#include <XnCppWrapper.h>
using namespace oni00;
#define CONFIG_PATH "Config00.xml"
#define WIN_WIDTH 640
#define WIN_HEIGHT 480
bool capFlag = false;
IplImage* img_camera = 0;
int g_slider_position = 0;
CvCapture* g_capture = NULL;
xn::Context context;
xn::ImageGenerator image;
xn::ImageMetaData imageMD;
//フォームを表示し、動画・カメラ映像用の画面を表示する
System::Void Form1::Form1_Load(System::Object^ sender, System::EventArgs^ e){
XnStatus nRetVal = XN_STATUS_OK;
nRetVal = context.InitFromXmlFile(CONFIG_PATH, NULL);
if (nRetVal != XN_STATUS_OK) {
MessageBox::Show("error - config.xml cannnot read");
return;
}
nRetVal = context.FindExistingNode(XN_NODE_TYPE_IMAGE, image);
if(nRetVal != XN_STATUS_OK) {
MessageBox::Show("error - Image Generator");
return;
}
img_camera = cvCreateImage(cvSize(WIN_WIDTH, WIN_HEIGHT),
IPL_DEPTH_8U,
3);
cvNamedWindow("Camera View");
cvNamedWindow("Movie View", CV_WINDOW_AUTOSIZE);
}
//Kinectの映像表示のボタン。ボタンを押すことでcapFlagが切り替わり、再生できる。
System::Void Form1::buttonstart_Click(System::Object^ sender, System::EventArgs^ e){
XnStatus nRetVal = XN_STATUS_OK;
buttonstop->Focus();
capFlag = true;
while (capFlag == true) {
context.WaitOneUpdateAll(image);
image.GetMetaData(imageMD);
memcpy(img_camera->imageData, imageMD.RGB24Data(), img_camera->imageSize);
cvCvtColor(img_camera, img_camera, CV_RGB2BGR);
cvShowImage("Camera View", img_camera);
Application::DoEvents();
}
}
//カメラ映像の一時停止ボタン
System::Void Form1::buttonstop_Click(System::Object^ sender, System::EventArgs^ e){
capFlag = false;
}
//以下のコードでAVI動画を表示する。http://itdiary.hatenablog.com/entry/2013/05/17/1 …を参考にしました。動画が複数あるために以下のように改良しました。
//スライドバー操作の際のコールバックルーチン定義のための関数
void onTrackbarSlide(int pos){
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);
}
//動画を表示する関数
void Showmovie(){
//bool isStop = false;
int frames = (int) cvGetCaptureProperty(
g_capture,
CV_CAP_PROP_FRAME_COUNT
);
if( frames!=0 ){
cvCreateTrackbar(
"Position",
"Movie View",
&g_slider_position,
frames,
onTrackbarSlide
);
}
IplImage* frame;
while(1){
frame = cvQueryFrame(g_capture);
if(!frame) {g_slider_position = 0;};
g_slider_position++;
cvShowImage("Movie View",frame);
cvSetTrackbarPos(
"Position",
"Movie View",
g_slider_position
);
char c = cvWaitKey(33);
if(c==27) break;
else if(c==32){
c = cvWaitKey(0); //スペースキーで一時停止
if(c==27) break;
}
}
cvReleaseCapture(&g_capture);
}
//動画を表示するボタン。このボタンは複数あり、それぞれ違う動画を表示できるようになっている。
System::Void Form1::button1_Click(System::Object^ sender, System::EventArgs^ e){
g_capture = cvCreateFileCapture( "link1.avi" );
Showmovie();
}
//フォームを閉じると、他の画面も閉じる
System::Void Form1::Form1_FormClosed(
System::Object^ sender, System::Windows::Forms::FormClosedEventArgs^ e){
capFlag = false;
context.Release();
cvReleaseImage(&img_camera);
cvDestroyAllWindows();
}
コードが多くて申し訳ありませんが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LINEで動画を送信 その後表示し...
-
ヤフオク説明文で直接URLを飛ば...
-
動画がウインドウズと一緒に拡...
-
パソコン上で4K動画を4k非対...
-
YouTubeについてです。 2〜3日...
-
iPadで、YouTubeを止めずに別の...
-
PCの画面共有で映画を見る方法
-
u-nextをiPhoneとテレビを繋い...
-
xvideosが再生できない
-
ユーチューブのショート動画っ...
-
グーグルドライブの動画をDVD-R...
-
VLC media playerでmpgの動画を...
-
YouTubeの動画を途中で停止する...
-
YOUTUBEで自動的に再生される広...
-
TikTokの動画が保存できなくな...
-
xvideos.comの動画ダウンロード...
-
パワーポイントで動画を繰り返...
-
RealPlayer Downloaderのダウン...
-
NHK高校講座の動画が再生できま...
-
【YouTube動画を縦画面の中央に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LINEで動画を送信 その後表示し...
-
ヤフオク説明文で直接URLを飛ば...
-
Power Point の動画が止まる
-
動画がウインドウズと一緒に拡...
-
Access 2003で動画の再生ができ...
-
パソコンで動画再生時に画面が...
-
bxsliderで動画と静止画混在の...
-
vimeoのダウンロード・再生につ...
-
日本はイジメ加害者に対して甘...
-
シャープLED-TV、AVI動画が再生...
-
ブラウザを使えばYouTubeなどの...
-
画面4枚に横長にならない様に映...
-
microSDカードに保存していた動...
-
Internet Explorer 11で動画を...
-
Macでネットの動画を見るには、...
-
YouTubeのHD画質の動画を、iPod...
-
Linuxで動画をmplayerで再生し...
-
MSNのOneDriveに保存したはずの...
-
DMMのストリーミングを保存
-
動画が再生できない?
おすすめ情報