新手求助:关于自主择业 图像采集集问题

新手求助:关于图像采集问题
[问题点数:50分,结帖人snowflier]
新手求助:关于图像采集问题
[问题点数:50分,结帖人snowflier]
只显示楼主
取消只显示楼主
匿名用户不能发表回复!|新手求助:关于图像采集问题
>>>文章内容
新手求助:关于图像采集问题
各位大侠:
&&我是新手。老板让将图像采集做到软件中,我对于用vc做视频采集一窍不通,请问有没有相关资料,可以让我学习,最后有例子。
---------------------------------------------------------------
难道你用的板卡没有API吗?
如果有,直接调用就可以了。不过这样等你把软件做好,交付使用,你会发现自己还是不懂视频采集。:)
---------------------------------------------------------------
我也很需要这方面的知识
---------------------------------------------------------------
做什么程序?驱动还是应用程序
DDK中有现成的视频采集驱动的例子,应用方面,需要会用DX
---------------------------------------------------------------
找到的一些资料,共享一下
这篇解释和示例如何通过directshow的接口去初始化和访问系统的硬件设备。代表性的,directshow应用程序使用下面类型的硬件。
音/视频捕捉卡
音频或视频回放卡
音频或视频压缩或解压卡(象mpeg解码器)
下面将以av设备作参考。
如何列举设备
包括在directshow&sdk中的接口,类,和例子提供了音/视频捕捉和回放的功能。因为文件源过滤器和filter&graph&manager处理了内在的工作,所有,添加捕捉功能到一个应用程序中,只需添加很少的代码。你可以通过列举系统硬件设备和得到设备列表完成特别的任务(例如:所有的视频捕捉卡的列表)。directshow自动为win32和video&for&windows&设备实例化过滤器。
要av设备工作,首先,你必须检测当前系统存在的设备。icreatedevenum接口建立指定类型的列表。提供你需要的检测和设置硬件的功能。访问一个指定的设备有三步,详细的说明和代码如下:
建立系统硬件设备的列表
首先,申明一个列表指针,然后通过&cocreateinstance&建立。clsid_systemdeviceenum是我们想建立对象的类型,iid_icreatedevenum是接口的guid。
&&&&icreatedevenum&&*pcreatedevenum&;
&&&&cocreateinstance(clsid_systemdeviceenum,&null,&clsctx_inproc_server,
&&&&&iid_icreatedevenum,&(void**)&pcreatedevenum)&;
其次,建立一个特别类型的硬件设备的列表(例如视频捕捉卡)
申明一个ienummoniker接口,并把他传给icreatedevenum::createclassenumerator&方法。你就可以使用他访问新得到的列表了。
&&&&ienummoniker&*penummon&;
&&&&pcreatedevenum-&createclassenumerator(
&&&&[specify&device&guid&here]
&&&&&penummon,&0);
最后,列举列表直到你得到你想要的设备为止。
如果先前的createclassenumerator调用成功了,你可以用ienummoniker::next得到设备。调用imoniker::bindtoobject建立一个和选择的device联合的filter,并且装载filter的属性(clsid,friendlyname,&and&devicepath)。不需要为if语句的(1&==&cfetched)&困惑,在测试合法性之前,penummon-&next(1,&&pmon,&&cfetched)方法会设置他为返回对象的数字(如果成功了为1)。
&&&&ulong&cfetched&=&0;
&&&&imoniker&*pmon&;
&&&&if&(s_ok&==&(penummon-&next(1,&&pmon,&&cfetched))&&&&&&(1&==&cfetched))
&&&&&&&&pmon-&bindtoobject(0,&0,&iid_ibasefilter,&(void&**)&[desired&interface&here])&;
好,现在你有了一个imoniker指针,你可以添加设备的filter到filter&graph。一旦你添加了filter,你就不需要imoniker指针,设备列表,或系统设备列表。
&&&&&pgraph-&addfilter([desired&interface&here],&l"[filter&name&here]")&;
&&&&&pmon-&release()&;&&//&release&moniker
&penummon-&release()&;&//&release&the&class&enumerator
&&&&pcreatedevenum-&release();
实例:amcap中的设备列表代码
amcap例子中,把所有的接口指针和一些成员变量保存在一个全局结构gcap中了。
定义如下:
struct&_capstuff&{
&&&&char&szcapturefile[_max_path];
&&&&word&&&//&size&in&meg
&&&&icapturegraphbuilder&*
&&&&ivideowindow&*
&&&&imediaeventex&*
&&&&iamdroppedframes&*
&&&&iamvideocompression&*
&&&&iamvfwcapturedialogs&*
&&&&iamstreamconfig&*&&&&&&//&for&audio&cap
&&&&iamstreamconfig&*&&&&&&//&for&video&cap
&&&&ibasefilter&*
&&&&ibasefilter&*pvcap,&*
&&&&igraphbuilder&*
&&&&ifilesinkfilter&*
&&&&iconfigavimux&*
&&&&double&
&&&&char&achfriendlyname[120];
&&&&dword&
例子用uindex变量循环列举系统的硬件设备。
bool&initcapfilters()
&&&&hresult&
&&&&bool&f;
&&&&uint&uindex&=&0;
makebuilder函数建立了一个filter&graph&builder(参考建立一个捕捉程序)。
&&&&f&=&makebuilder();
建立设备列表对象,得到icreatedevenum接口
&&&&icreatedevenum&*
&&&&hr&=&cocreateinstance(clsid_systemdeviceenum,&null,&clsctx_inproc_server,
&&&&&&&&&&&&&&&&&&&&&&&&&&iid_icreatedevenum,&(void**)&pcreatedevenum);
建立一个特别类型的硬件设备的列表,类的id是clsid_videoinputdevicecategory。现在有了一个ienummoniker指针,可以访问捕捉设备的列表了。
&&&&ienummoniker&*
&&&&hr&=&pcreatedevenum-&createclassenumerator(clsid_videoinputdevicecategory,&&pem,&0);
&&&&pcreatedevenum-&release();&&&//&we&don't&need&the&device&enumerator&anymore
&&&&pem-&reset();&&&&&&//&go&to&the&start&of&the&
网友对“新手求助:关于图像采集问题”的评论【求助】新手求助各位大神,关于图像截取问题_matlab吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:196,512贴子:
【求助】新手求助各位大神,关于图像截取问题收藏
如何用matbal显示图像坐标,截取其中两部分并交换位置??谢谢大神了~
企业版MATLAB中文官方试用下载,让工程师和科学家更高效地进行科学计算.
就是这张图片,老师让我们交换眉毛和眼睛的位置,可以帮我演示一遍程序吗?
登录百度帐号新手求助:关于Listener的问题_百度知道
新手求助:关于Listener的问题
我有更好的答案
尝试一下监听重新配一次
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 自主择业 图像采集 的文章

 

随机推荐