読者リクエスト!(C++言語でカメラへアクセス)

桜も散って暖かくなると思いきや…

うみゅ~…さぶい。(4月1日時点)

一日一回、妻の前で放つ私の渾身のギャグはもっと寒いが気にしない。
困るのは私じゃない。…そう、妻だ。

ぴゅー~…。

こんな日は、あたたかいコーヒーでも飲んで
バシバシお仕事をするに限るッ!!

余談だけど、コーヒー用のマグカップを落として割ってしまったので
新しいマグカップを購入した。 なんとAmazonデザインだ!!(別にAmazonが大好きってわけじゃない)
結構大きいので、コーヒーをがぶ飲みする筆者にピッタリ♪

Amazonマグカップ

さて、仕事しようと気合を入れると、私のスマホが「ちゃらりーん」と鳴った。
見てみると、ITエンジニアの読者から。

「2013年に書かれたブログを見て、教えてほしいことがある」とのお問い合わせだ。

どうもありがたいこってす。

読者が見たブログというのは…

ふむふむ…。この記事でしょうか。
「WEBカメラで、こんなコトやあんなコト♪」
http://brog.eightprism.main.jp/?eid=23#sequel

カメラデバイスに、C++でアクセスして取得した映像をリアルタイムで
アスキーアートに変換して遊んでみたよ、っていう記事だね。確かに私が書いた記事だ。

「参考にしたいので技術一式欲しい」との依頼だが、申し訳ありませぬ。
弊社は既にSJIS環境から開発環境を完全にUnicode対応版に移行しており、過去の保守が必要なソースのみ
保管し、研究目的や遊びで作ったようなソースは処分しております。
そういうわけで、当時のものを丸ごと差し上げることができません。ごめんなさい!!

でも、最近は開発者の集まりなんかに行くと、やれPHPだAjaxだ、RubyだPhysonだ、、
とWEB系の話ばっかり。

メモリリークやスレッド処理のお話も出来ない、json?いやいやINIファイルでいいじゃん。
みたいな感じで話の輪に入れない…と嘆いておりましたが
まだまだ生息していましたか!!BCB5(C++)ユーザ♪
どうでもいい話だけど、JSONってコメントを書くのが一工夫いるのよ。
それって設定ファイルとして致命的だよねf^-^;

嬉しくなったので、簡単だけど考え方とサンプルコードを載せておきます。ご参考まで。

サンプルコード

1.vfw.hをインクルード
#include <vfw.h> をインクルード。

2.ハンドルを格納する変数を用意
HWND hWnd; 一応、コンストラクタでNULL初期化。

TForm内にTPanelを一個配置しておく。

3.デバイスへ接続

hWnd = capCreateCaptureWindow(
L”Captrue Window”,     //キャプチャウィンドウの名前
WS_CHILD | WS_VISIBLE,  //ウィンドウスタイル
1 , 1,            //表示位置
Panel1->Width, Panel1->Height, //ウィンドウサイズ
Panel1->Handle,      //親のハンドル
NULL
);

if (capDriverConnect( hWnd, 0 )) {    //チャンネル1に接続
capPreviewRate( hWnd, 1 );  //プレビューレートの設定
capPreview( hWnd, true );   //プレビューモードで動作

ShowMessage(“カメラデバイスに接続したよん”);
}

4.デストラクタでドライバの解放
if (hWnd) capDriverDisconnect(hWnd);

かなり端折ったけど、概ねこんな感じになるかと。
※BCB5だったら、capCreateCaptureWindowの第一引数にLは不要。
環境によっては動かないかもしれないが、その辺はご自身で工夫して頂きたい。

—————————————————————–

そういえば、最近の業務依頼はやたらWEB系の話が多い。
これも時代かのぅ…。