FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

カメラを吟味 目のプログラム 最初の壁»

コメント

コメントの投稿













管理者にだけ表示を許可する

目のプログラム その2


エラーが取れたので

さっそくフォーム上にカメラの映像を描画する基本プログラムを組んでみました

プログラムはこちら


IplImage *img;
CvCapture *src;

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
               
                src = cvCaptureFromCAM(0);              //カメラを選択
                img = cvQueryFrame(src);                   //カメラの画像を1フレーム読み込む
                if(img == NULL){
                    textBox1->Text = "ファイルが読み込めません";
                }
               
                pictureBox1->Width = img->width;          //ピクチャーボックスのサイズを画像の幅に合わせる
                pictureBox1->Height = img->height;       //ピクチャーボックスのサイズを画像の高さに合わせる
       
                timer1->Interval = 33;                   //タイマーを33msごとにセット
                timer1->Start();                             //タイマースタート

             }
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
                 img=cvQueryFrame(src);                                                          //1フレーム読み込み
                 Bitmap ^ bmp = gcnew Bitmap(img->width,img->height,img->widthStep,
                        System::Drawing::Imaging::PixelFormat::Format24bppRgb,IntPtr(img->imageData));          
                                                                                                                //ビットマップクラスの作成
                 pictureBox1->Image = bmp;                                                   //ピクチャーボックスに描画
             }
private: System::Void Form1_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) {
                 cvReleaseCapture(&src);                                                         //カメラの開放
             }
}



初めはこんなのでうまくいくとは思わなかったのですが、
思いのほかうまくいってちょっとびっくり

s-201005122.jpg

このプログラムの要はビットマップクラスを使うこと

はっきり言って、プログラムはそんなに得意じゃないので クラスとかよくわかってなかったりしますww

このビットマップクラスのインスタンス(?)を初期化する書式がいくつかあるらしく

Bitmap(Image) や

Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr)というのがあります。

イメージデータを持ってるなら Bitmap(Image)を使えばいいんでしょうが

今回はOpenCVの IplImage構造体の中からデータを持ってこなくてはならず

渡せるのはイメージのポインターなのです

そこでこの
Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr) の出番というわけらしいのです

このIntPtrというのがまさにピクセルデータを格納する配列へのポインタらしいので

ここに引き渡せます

このビットマップクラスをピクチャーボックスのイメージにして

それを33msに一度の間隔で繰り返せば動画になると いう寸法みたいです

なんとなく初めのさわりなので、ピクチャーボックスのイメージプロパティに渡しちゃいましたが

複雑なことをするならグラフィッククラスを使った方がよいのかな?

まぁ、それは明日勉強すればいいや
スポンサーサイト

カメラを吟味 目のプログラム 最初の壁»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。