ICIMAGINGSOURCE社のUSBカメラを使って画像処理をするために
C#、VC++、C++Builderのどれが使えるかをテストした。
出来ればGUIを簡単に構築できるC++Builderをつかいたいので
カメラ付属のVC専用クラスライブラリを使ってDLLを作り
C++Builderから呼び出そうと苦労したがDLL呼出しの段階で
原因不明のエラーが発生して断念(-.-)
VB用に用意されたActiveXを使えばDelphiからも簡単に
カメラを使えることに気がついてやってみたら、数十分の作業であっけなく成功。
それならと、C++BuilderからActiveXを呼び出してみると原因不明のエラー。
テストの結果プロジェクトオプション>パッケージ>パッケージ再構築の欄で
実行時パッケージを使って構築のチェックを外すとOKなことが判明。
DLL呼出しもたぶんこれでOKだろうがActiveXを使う方が簡単なのでこちらにした。
C++BuilderでICIMAGINGSOURCEのカメラを使う方法
1.コンポーネント>ActiveXの取込で
C:\Program Files\Common Files\IC Imaging Control 3\icimagingcontrol.ocx
を追加してインストール。
2.アプリケーションを新規作成してフォームにICImagingControlコンポーネントを貼り付け
3.カメラをつないでプロパティ Deviceでカメラを選択
4.ボタンを貼り付けて機能を呼び出す
ソースは次のとおり、C++builder だととっても簡単です。
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "ICImagingControl3_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
int count=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
ICImagingControl1->LiveStart();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
ICImagingControl1->LiveStop();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ICImagingControl1ImageAvailable(TObject *Sender,
long BufferIndex)
{
Label2->Caption = IntToStr(++count);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
ICImagingControl1->ShowPropertyDialog();
}
//---------------------------------------------------------------------------
No comments:
Post a Comment