ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

OPEN CVコミュのシリアル受信イベント関数内の新規ウィンドウの表示

  • mixiチェック
  • このエントリーをはてなブックマークに追加

OpenCV + ウィンドウズフォームアプリケーションという条件で開発を行っています.
ここで,新規ウィンドウを開いてウィンドウ内を塗りつぶしたいのですが,全く同じ記述を書いているにも変わらず下記の2つの関数内では結果の成否に違いがでてしまいます.

・フォームアプリケーションのボタンクリックのイベント関数
System::Void Form1::btnCamera_Click(System::Object^ sender, System::EventArgs^ e)
(正常動作)

・シリアル通信データ受信のイベント関数
System::Void Form1::serialPort1_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e)
(ウィンドウは生成されるが塗りつぶしが行われない)

ウィンドウ表示のために付加している記述は以下の通りです

img_test = cvCreateImage(cvGetSize(img_frame), IPL_DEPTH_8U, 3);

img_test->width = 200;
img_test->height = 200;

int ly, lx;
for(ly = 0; ly < img_frame->height; ly++)
{
for(lx = 0; lx < img_frame->width; lx++)
{
img_test->imageData[img_test->widthStep * ly + lx * 3+ELEMENT_R] = 255;
img_test->imageData[img_test->widthStep * ly + lx * 3+ELEMENT_G] = 0;
img_test->imageData[img_test->widthStep * ly + lx * 3+ELEMENT_B] = 255;

}
}
cvShowImage("test", img_test);
cvReleaseImage(&img_test);

私自身素人ですのでこの記述が何か良くないのかもしれません・・・
ご教授頂ける方よろしくお願いいたします.

コメント(2)

どうやら,私の質問の仕方がまずかったようで今のところ返信が頂けていませんが取りあえず分かっている状況としては
プログラム内で決定されるタイミングではOpenCVの関数は実行されるが外部割込み(イベント)で実行される関数内ではOpenCVの関数は正常に実行されないという事です.
この問題は解決することが避けられないので,引き続き取り組んでいきます.
では,また進展があったら報告させて頂きます.
結構前に解決していたんですが,自分の質問したトピックがどのコミュニティか分からなくなって書き込みが遅れました.

結果として,シリアル通信データ受信のイベント関数 でウィンドウの塗りつぶしが行われなかったのは,シリアル通信の受信イベント周期が速すぎて塗りつぶす暇がなかったというだけでしたw
皆様お騒がせしました><

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

OPEN CV 更新情報

OPEN CVのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。