Apr 24, 2009

IC Imaging Source CAMERA with C++Builder6 & Delphi


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();
}
//---------------------------------------------------------------------------

Apr 16, 2009

OpenCV with C++Builder6

OpenCV1.1をC++Builder6で使ってみることにした
参考にしたサイト
http://www18.ocn.ne.jp/~amedas/tips/opencv_borland.html

そのままでは make -f make_all_bc.mak が通らなかったので次の2点を修正
1. OpenCV\ml\src\mlsvm.cpp の186行あたりを次のように変更
// error += is_regression ? powf( resp - *(float*)true_resp, 2 )
error += is_regression ? pow( resp - *(float*)true_resp, 2 )
2. OpenCV\otherlibs\_graphics\lib\videoInput.lib をOMF形式に変換
videoInput.lib を _videoInput.lib にリネームしてから
> coff2omf _videoInput.lib videoInput.lib