• お知らせ
  • コラム
  • サイトマップ
株式会社アーツテック
“難しい”を“簡単”に変える技術で、新マーケットの創造 株式会社アーツテック
開発会社として、技術の利用の仕方や可能性、
営業・設計といったそれぞれのビジネスシーンで重要なことや経験談、
これから社会に出る方々へのアドバイスなどを現場の社員がお話しします。
  
コラムの更新は随時行っていきます。
  • Home
  • Services
  • Solution
  • Company
  • Recruit
  • Contact

無償開発環境で簡易WEBカメラの製作

無償開発環境で簡易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)です。
その部分を適宜読み替えてインストールしてください。
それ以外のダウンロード・インストールファイルは全く同じです。

(ダウンロード先の場所を別Windowで表示)(ダウンロード先の場所を別Windowで表示)

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

(検索パスに追加を別Windowで表示)(検索パスに追加を別Windowで表示)

次に、[リンカ(ilink32)]内にある[パスと定義]を同じく選択し、[ライブラリ検索パス(-L)]の[編集(E)]ボタンを押し、以下を追加します。

C:\Program Files\OpenCV\lib

(検索パスに追加を別Windowで表示)(検索パスに追加を別Windowで表示)

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

(プロジェクトに追加を別Windowで表示)(プロジェクトに追加を別Windowで表示)

これで、プログラムを作成する下準備は完了です。

IplImageとTBitmapの変換

OpenCVにて取得される画像はIplImageという構造体です。TurboC++で画像を保存するクラスはTBitmapであり、両者の間で画像をやり取りするには変換を行う必要があります。

インターネットを検索すると、IplImageToTBitmapというメソッドを利用すればよいと書かれているようですが、そのコードがOpenCV内には無いようです。
よって、公開されているコードに一部修正を入れ、利用することにしました。
(公開されているままではなぜか上下反転の画像しか得られない為、内部のループを変更しました)

▼修正を加えたコードをダウンロード(IplImageToTBitmap.zip)

FTPの転送

有償版のTurboC++ Professionalには「Indy」と呼ばれるインターネット接続コンポーネントが利用できるのですが、無償版のTurboC++ Explorerではインストールしようとすると「利用する為のライセンスがありません」というエラーが出てしまいます。

(ライセンスのエラーを別Windowで表示)(ライセンスのエラーを別Windowで表示)

よって、Windows の API を利用してFTP接続を行うことにしました。
FTP接続には WinSock API を利用する方法と、WinInet API を利用する方法があるのですが、WinInet の方が簡単な為、今回は WinInet を利用することにしました。
C:\Program Files\Borland\BDS\4.0\lib\wininet.libをプロジェクトに追加し、wininet.hをincludeすれば使うことが出来ます。

コーディング

上記の各機能を結びつければ基本的な部分は完成します。

最終的なプロジェクトはこのようになりました。(別Windowで表示)最終的なプロジェクトはこのようになりました。(別Windowで表示)

プログラムについて細かく書いていくとかなりのボリュームになってしまうので、今回作成したプロジェクト一式を公開します。
部分部分にコメントを入れましたので、理解は容易だと思います。

▼TinyWebcamのプロジェクト一式をダウンロード(TinyWebcam_src.zip)

完成

自動アップロードのチェックボックスを入れると動作し始めます。
アップロード先にftpサーバのフルパスを設定すると、1分間に1枚、JPEG画像を転送します。
OpenCVの使い方によっては顔認識や画像加工、動画のストリーミングも出来るようになりますので、上記のコードを使って改良してみてください。

実行イメージ実行イメージ

▼TinyWebcamの実行ファイル一式をダウンロード(tinyWebcam.zip)

また、実際に撮影されている画像を下記に表示します。場所は上大崎交差点と、その上を走る首都高速目黒2号線になります。

webcamwebcam

開発部:5年目

ダウンロード

添付ファイルサイズ
修正を加えたコードをダウンロード(IplImageToTBitmap.zip)1.44 KB
TinyWebcamのプロジェクト一式をダウンロード(TinyWebcam_src.zip)9.68 KB
TinyWebcamの実行ファイル一式をダウンロード(tinyWebcam.zip)1.25 MB
システム開発
事業内容
カードビジネス事業
品質管理
スマートフォン&タブレット・アプリ開発
スマートフォン・ソリューションのプロデュースについて
アーツテックについて
会社概要
会社沿革
アクセス
アーツテックはこんな会社です
新卒採用
中途採用
ページの先頭へ戻る
  • ホーム
  • このサイトについて
  • プライバシーポリシー
  • お問い合わせ

  株式会社アーツテック 〒141-0031 東京都品川区西五反田8-9-5 ポーラ第3五反田ビル4階 TEL:03-5437-2751
Copyright(C) 2011 Artstech Inc. All Rights Reserved.