無償開発環境で簡易WEBカメラの製作
昨今はアプリケーションの統合開発環境(IDE)に無料化の波が押し寄せてきており、様々な環境を試してプログラミングができるようになってきました。
今回は、ボーランド社が提供する無料の開発環境「Turbo C++ Explorer」を利用して、簡易Webカメラ送信プログラムを作成してみます。
作成するプログラムの概要
無償のWindows開発環境を利用し、市販のごく一般的なUSB接続Webカメラを使い、1分毎に撮影した画像をFTPサイトへアップロードします。
しかし、ただ撮影した映像をFTPによってアップロードするだけでは面白くないので、市販の「USB温度・湿度計」を利用し、日時・温度・湿度を画像の中に埋め込みます。
(上記USB温度・湿度計モジュールが無くてもプログラムは動作します)
USB温度・湿度測定モジュール
今回は「簡易WEBカメラ」の作成なのであまり大げさな機器を用意せず、ストロベリーリナックス社の「USB温度・湿度測定モジュール」を利用することにしました。 キットを自分で組み立てる場合は約4000円、完成品は約5000円で販売されています。
TurboC++ Explorerのインストール
Turbo C++ は米ボーランド社が提供するC++言語のWindows統合開発環境です。
VCLというライブラリを利用することで直感的なプログラミングを行うことが出来ます。
Explorer版は無償、Professional版は有償のアプリケーションです。

無償・有償の違いは、コンポーネント(プログラムの部品)の追加が出来ないか出来るかの違いのみで、無償版でも商用開発ができます。
インストール手順はITProに連載されている「フリーのTurbo Delphiで始めるWindowsプログラミング」を参考にしてください。
Turbo Delphi は米ボーランド社が提供するDelphi言語のWindows統合環境で、TurboC++と同じVCLを使うことが出来ます。いわば兄弟のようなものです。
TurboC++ と Turbo Delphi は殆ど同じ手順でインストールを行うことが出来ます。
実際のインストール作業が記述されているページは、上記記事の2ページ目、3ページ目です。
但し、今回ダウンロードするアプリケーションは記事中の「Turbo Delphi Explorer」(TurboDelphi_JP.exe)ではなく、その2つ下の「Turbo C++ Explorer」(TCPP_EXPL_JP_DL.exe)です。
その部分を適宜読み替えてインストールしてください。
それ以外のダウンロード・インストールファイルは全く同じです。
OpenCVのインストール
OpenCVは、米インテル社がオープンソースで公開している画像処理ライブラリです。
画像の変形やパターン認識、動画解析などの豊富なC言語用関数が用意されています。今回は、Webカメラからの画像の取得を容易に行う為に利用します。
インストール方法についてはOpenCV のインストールのインストール手順を参考にしてください。
OpenCVライブラリの再構築
OpenCV付属のライブラリファイル(*.lib)は、VisualC++やGCCで利用するCOFF形式です。
しかし、TurboC++はOMF形式を利用する為、変換を行わなければなりません。TurboC++に付属する coff2omf を使って一つずつ変換する方法もあるのですが、OpenCVにBorland環境用のMAKEファイルが付属しているので、これを利用して再構築します。
OpenCVインストールフォルダの_makeフォルダに移動し、コマンドプロンプト上から以下のように入力します。
make -f make_all_bc.mak
これによって、OMF形式のライブラリファイルと再構築されたDLLファイルが出来上がります。
TurboC++へのOpenCVの設定
TurboC++にOpenCVのヘッダファイル(*.h)、ライブラリファイル(*.lib)を検索パスに追加します。
[プロジェクト(P)]→[デフォルトオプション(O)]→[C++Builder]を選択し、[C++コンパイラ(bcc32)]内にある[パスと定義]を選択します。
[インクルードファイルの検索パス(-I)]の[編集(E)]ボタンを押し、以下を追加します。
C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui
次に、[リンカ(ilink32)]内にある[パスと定義]を同じく選択し、[ライブラリ検索パス(-L)]の[編集(E)]ボタンを押し、以下を追加します。
C:\Program Files\OpenCV\lib
TurboC++プロジェクトへのOpenCVの設定
いよいよプロジェクトを作成します。
[ファイル(F)]→[新規作成(N)]→[VCLフォームアプリケーション - C++Builder(V)]を選択すると、新規プロジェクトが作成されます。
右側に表示されているプロジェクトマネージャの[Project1.exe]を右クリックし、[追加(A)]を選択します。
[プロジェクトに追加]ダイヤログが開きますので、ファイルの場所(I)を「C:\Program Files\OpenCV\lib」に移動します。
ファイルの種類を「ライブラリファイル(*.lib)」に変更し、以下のファイルを選択してください。
highgui.lib cv.lib cvaux.lib cxcore.lib
これで、プログラムを作成する下準備は完了です。
IplImageとTBitmapの変換
OpenCVにて取得される画像はIplImageという構造体です。TurboC++で画像を保存するクラスはTBitmapであり、両者の間で画像をやり取りするには変換を行う必要があります。
インターネットを検索すると、IplImageToTBitmapというメソッドを利用すればよいと書かれているようですが、そのコードがOpenCV内には無いようです。
よって、公開されているコードに一部修正を入れ、利用することにしました。
(公開されているままではなぜか上下反転の画像しか得られない為、内部のループを変更しました)
▼修正を加えたコードをダウンロード(IplImageToTBitmap.zip)
FTPの転送
有償版のTurboC++ Professionalには「Indy」と呼ばれるインターネット接続コンポーネントが利用できるのですが、無償版のTurboC++ Explorerではインストールしようとすると「利用する為のライセンスがありません」というエラーが出てしまいます。
よって、Windows の API を利用してFTP接続を行うことにしました。
FTP接続には WinSock API を利用する方法と、WinInet API を利用する方法があるのですが、WinInet の方が簡単な為、今回は WinInet を利用することにしました。
C:\Program Files\Borland\BDS\4.0\lib\wininet.libをプロジェクトに追加し、wininet.hをincludeすれば使うことが出来ます。
コーディング
上記の各機能を結びつければ基本的な部分は完成します。
最終的なプロジェクトはこのようになりました。(別Windowで表示)
プログラムについて細かく書いていくとかなりのボリュームになってしまうので、今回作成したプロジェクト一式を公開します。
部分部分にコメントを入れましたので、理解は容易だと思います。
▼TinyWebcamのプロジェクト一式をダウンロード(TinyWebcam_src.zip)
完成
自動アップロードのチェックボックスを入れると動作し始めます。
アップロード先にftpサーバのフルパスを設定すると、1分間に1枚、JPEG画像を転送します。
OpenCVの使い方によっては顔認識や画像加工、動画のストリーミングも出来るようになりますので、上記のコードを使って改良してみてください。
実行イメージ
▼TinyWebcamの実行ファイル一式をダウンロード(tinyWebcam.zip)
また、実際に撮影されている画像を下記に表示します。場所は上大崎交差点と、その上を走る首都高速目黒2号線になります。
webcam
ダウンロード
| 添付ファイル | サイズ |
|---|---|
| 修正を加えたコードをダウンロード(IplImageToTBitmap.zip) | 1.44 KB |
| TinyWebcamのプロジェクト一式をダウンロード(TinyWebcam_src.zip) | 9.68 KB |
| TinyWebcamの実行ファイル一式をダウンロード(tinyWebcam.zip) | 1.25 MB |






