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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LINEで動画を送信 その後表示し...
-
ヤフオク説明文で直接URLを飛ば...
-
パソコン上で4K動画を4k非対...
-
iPadで、YouTubeを止めずに別の...
-
PCの画面共有で映画を見る方法
-
this AVについて
-
ユーチューブのショート動画っ...
-
u-nextをiPhoneとテレビを繋い...
-
avgleが再生できません…
-
TikTokの動画が保存できなくな...
-
PowerPointにDVDの動画を挿入し...
-
YouTubeについてです。 2〜3日...
-
fanzaについて
-
Youtubeのダウンロードについて
-
PowerDVD19ULTRAからYouTube動...
-
VLC media playerでmpgの動画を...
-
動画の再生ができないです。。
-
教えてください!動画について
-
Air Video
-
パワーポイントで動画を繰り返...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LINEで動画を送信 その後表示し...
-
ヤフオク説明文で直接URLを飛ば...
-
動画がウインドウズと一緒に拡...
-
Power Point の動画が止まる
-
ブラウザを使えばYouTubeなどの...
-
パソコンで動画再生時に画面が...
-
bxsliderで動画と静止画混在の...
-
ホームページの動画について
-
LINEの動画再生についてです。 ...
-
動画が止まる
-
IEとFirefoxでのmov動画の表示...
-
WMV形式の動画の色がおかしい
-
Internet Explorer 11で動画を...
-
iphoneの動画再生を横で見るに...
-
Sleipnir 動画再生時の不具合
-
sleipnir について
-
MSNのOneDriveに保存したはずの...
-
DMMのストリーミングを保存
-
動画の解像度
-
ニコニコ動画で
おすすめ情報