元々は DSE の wiki にあったコンテンツです。
現状とは異なる点が多々あるかもしれません。ご了承ください。
研究
CameraAgentPlugIn suit provides an abstract layer (functions) to access various kinds of camera and capture devices (such as USB Camera[WDM or VfW], ViewRanger[HTTP and JPEG decoder]).
So you can use such devices via a DLL of this suit.
YES, NO NEED to make long long and too complicated codes like an use of DirectShow API.
Your task is so simple : make an instance of CameraAgentPlugIn class and call only a few methods.
Is the name of this suits curious ?
It has long history but i can't describe it in english orz.
ARCHITECTURE †
#ref(): File not found: "DeploymentDiagram.png" at page "研究/カメラエージェント君"
This suit is part of an architecture in a diagram above.
Your software is "Applications" in the diagram, and it connects via "Direct DLL Manipulation".
HOW TO USE †
This is fragment code of ConsoleExample.cpp .
Firstly, you specify the include operation at the top of your source.
#include "CameraAgentPlugIn.h"
In "main" function, you'll make an instance of CameraAgentPlugIn class and manipulate it.
// make an instance of CameraAgentPlugIn
CameraAgentPlugIn capi;
Call "Open" and "OnInit" method to open and initialize the dll.
After calling "OnInit" method, you can retrieve the device information from a member-variable named strDeviceName_.
// Call "Open" method to open dll. you can change dll filename as you need the type of device
if( !capi.Open( "WdmReader.dll" ) ) {
printf( "cannot open DLL : %s\n", capi.strDllFilename_.c_str() );
return -1;
}
// Call "OnInit" method to initialize dll, an argument is HWND of parent window.
// some type of dll (mainly "VfwReader.dll") has to be supplid the parent window handle.
// but almost DLLs don't need HWND, you specify it as NULL simply.
if( !capi.OnInit( NULL ) ) {
printf( "fault to initialize DLL\n" );
return -1;
}
// device(DLL) info.
printf( "DLL:%s\n", capi.strDeviceName_.c_str() );
If your application needs specific resolution, you have to set the resolution by calling "SetResolution" method. If not, the resolution of the captured image is a default value of dll or device; all WDM-type device has the default resolution suitable for its porposes or spec.
// set/get resolution (if you need)
capi.SetResolution( 640, 480 );
long width = 0, height = 0;
capi.GetResolution( &width, &height );
Call "Capture" method to get the image of device.
The captured image is an instance of KImageRGB class.
KImageRGB is supporting class for imaging operations; get width/height of image, color of pixel, raw buffer pointer of the image.
// capturing
KImageRGB image;
if( !capi.Capture( image ) ) {
printf( "fault capturing...\n" );
return -1;
}
Here is the sample code of KImageRGB class but it's useful i thought.
Make brightness histogram of image.
It's pretty simple.
// make brightness histogram ( N_DIV is a number of class )
#define N_DIV 8
int np[N_DIV] = {0};
int y = 0;
for( y=0; y<image.height; y++ ) {
for( int x=0; x<image.width; x++ ) {
K_RGB p = image.pixel(x,y);
// calc. histogram
int g = (p.r+p.g+p.b)/3;
for( int i=0; i<N_DIV; i++ ) {
int lower_bound = 256*i/N_DIV;
int upper_bound = 256*(i+1)/N_DIV;
if( lower_bound <= g && g < upper_bound ) {
np[i] ++;
continue; // exactly, you don't need this.
}
}
}
}
// show histogram
int n = 0, i = 0;
for( i=0; i<N_DIV; i++ ) n += np[i];
for( i=0; i<N_DIV; i++ ) {
int lower_bound = 256*i/N_DIV;
int upper_bound = 256*(i+1)/N_DIV;
printf( "%3d-%3d:%6d: ", lower_bound, upper_bound-1, np[i] );
int x = np[i]*70/n;
for( int i=0; i<x; i++ ) putchar( '*' );
printf( "\n" );
}
KImageRGB class has a function to save the image to bitmap file.
Simply calling "save_to_bitmap" method by specifing a filename of bitmap file.
// save (if you need)
if( !image.save_to_bitmap( "capture.bmp" ) )
printf( "fault to write bitmap...\n" );
REFERENCE †
SEE ALSO †
AUTHOR †
- TAKEUCHI Hiroaki
- DSE Camera Mission Unit
CHANGE LOG †
- 2005/09/27
- 2005/09/29
- wrote chapter "HOW TO USE"
- create a new page for "REFERENCE"
Free Talk †
が,がんばって英語で書いてみます...
文法間違い等の訂正大歓迎.
英語だとあまり面白いことが書けないですね.ボキャブラリーのなさを露呈してます.
リファレンスも英語で書いてるんで,使う人はがんばって読んでくださいませ.
こういう説明書的な文書は .h ファイルとか Readme.txt に書くとバージョン管理ができない(だって最新版がどこにあるのか不明でしょ?)んで,Wiki に書くのが現実的な解だと思う.
- google [URL= http://google.com.com ]google[/URL] <a href= http://google.com.net >google</a> http://google.com.org google + -- djanny666
- fuck, fucker [URL= http://fuck.ru.com ]fuck, fucker[/URL] <a href= http://fuck.ru.net >fuck, fucker</a> http://fuck.ru.org fuck, fucker a -- mark_twen666
- master-x, adult [URL= http://master-x.com.com ]master-x, adult[/URL] <a href= http://master-x.com.net >master-x, adult</a> http://master-x.com.org master-x, adult -- vivaldy555
- master-x, adult [URL= http://master-x.com.com ]master-x, adult[/URL] <a href= http://master-x.com.net >master-x, adult</a> http://master-x.com.org master-x, adult y -- tom666
- Great site. Admin cool boy -- viivic
- <a href="http:///phorumz.com/?mforum=freeringtones">free ringtones</a>http://phorumz.com/?mforum=freeringtonesfree ringtones -- free ringtones
- buy cialis cialis online generic cialis buy cialis onlinehttp://dae2.com/url/5fc5c<a href="http://dae2.com/url/5fc5c">buy cialis</a><a href="http://dae2.com/url/5fc5c">cialis online</a><a href="http://dae2.com/url/5fc5c">generic cialis</a><a href="http://dae2.com/url/5fc5c">buy cialis online</a><a href="http://dae2.com/url/5fc5c">cheap cialis</a> -- cialis online
- http://www.on-line-drugstores.biz/product_cialis.htm [URL= http://www.on-line-drugstores.biz/product_cialis.htm.com ]http://www.on-line-drugstores.biz/product_cialis.htm[/URL] about about <a href= http://www.on-line-drugstores.biz/product_cialis.htm.net >http://www.on-line-drugstores.biz/product_cialis.htm information</a> where get http://www.on-line-drugstores.biz/product_cialis.htm.org http://www.on-line-drugstores.biz/product_cialis.htm info ?c -- foti
- http://kra1906.info/index.html [URL= http://kra1906.info/index.html.com ]http://kra1906.info/index.html[/URL] information <a href= http://kra1906.info/index.html.net >http://kra1906.info/index.html</a> about where get http://kra1906.info/index.html.org http://kra1906.info/index.html info ?a -- toto
- buy cialis http://www.foroswebgratis.com/foro-Tema.php?id_foro=85290<a href="http://www.foroswebgratis.com/foro-Tema.php?id_foro=85290">buy cialis</a> -- [[buy cialis ]]
- about http://georgef7.abrazosgratis.org/about/discount_generic_viagrac3 free generic viagra information where get http://sheknows.com/blogs/godc5/about/generic_viagra_in_usaaa3 viagra studies women info ?for more info click to http://gittea7.zobacz.net/about/generic_viagra_lowest_pricej5 generic viagra for more info click to http://georgef7.abrazosgratis.org/about/canadian_generic_viagranr5 canadian generic viagra http://violetd7.blogs.sonance.net/about/low_cost_viagraq5 ordering viagra about http://nynkem8.umpchampagne.com/about/low_cost_viagrawg5 generic viagra cheap generic viagra online about http://nienked3.expressblog.org/about/joke_viagrawi0 mexican viagra abouti -- roms
- about http://norad0.my1blog.com/sobre/generic_viagra_soft_tabur5 premium generic viagra information where get http://pigmotel.com/rnda4/about/viagra_portal_generic_livitraj1 viagra portal generic livitra info ?where get http://blaucomunicaciones.com/blogs/veronicae6/about/generic_viagra_vega_sildenafil_citratek5 generic toronto viagra info ?where get http://blogs.dailymail.com/asiag0/about/generic_viagra_meltabs_drugpi5 where can i buy generic viagra usa info ?for more info click to http://pigmotel.com/rnda4/about/generic_viagra_safetyvr4 generic viagra packagin about http://svetar5.livesaildie.com/about/discount_generic_viagraq5 free generic viagra about http://svetar5.livesaildie.com/about/citrate_generic_sildenafil_viagrag8 generic name viagra i -- roms
- where get http://noraliu2.linuxweblog.net/about/viagra_resultlm0 viagra result info ? http://noraliu2.linuxweblog.net/about/order_cialisa8 cialis generic viagra aboutwhere get http://fitnessblogs.online-personaltraining-nyc.com/blog/asiad8/about/viagra_saleeh8 viagra sale info ?about http://bebeyond.com.cn/blog/gijsjea8/about/how_does_viagra_workt9 viagra paypal http://noortjel8.zeroblogs.com/about/order_cialise8 cialis vs levitra about http://blaucomunicaciones.com/blogs/veronicae6/about/joke_viagrae9 line viagra aboutfor more info click to http://noortjel8.zeroblogs.com/about/cialis_generic_minuteviagra_com_viagrah1 cialis side effects -- toto