請教怎样在扑捉的视频信号上面加十字标 DirectShow高手帮忙

abo77281 2010-11-01 01:23:00
请教兄弟姐妹:

我用Directshow做个视屏采集。

开了两个Surface:
(1)g_pDDSPrimary
// Create the primary surface
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_VIDEOPORT;
hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSPrimary, NULL);
(2)g_pDDSOverlay
// Create the overlay surface
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.ddsCaps.dwCaps = DDSCAPS_OVERLAY | DDSCAPS_FLIP |
DDSCAPS_VIDEOMEMORY | DDSCAPS_VIDEOPORT;
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_BACKBUFFERCOUNT |
DDSD_PIXELFORMAT;
hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSOverlay, NULL);

Video的视频放在g_pDDSPrimary上面。
然后在g_pDDSOverlay画上我想要显示的图标,然后覆盖在g_pDDSPrimary上面。
g_pDDSOverlay->UpdateOverlay(&rs, g_pDDSPrimary, &rd, DDOVER_SHOW, NULL);

现在问题是怎样在视屏上显示各十字光标,用透明位图或是其他方法都可以?

请教各位!

...全文
291 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
abo77281 2010-11-02
  • 打赏
  • 举报
回复
uping~
abo77281 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 dengzikun 的回复:]
引用 16 楼 abo77281 的回复:
引用 15 楼 dengzikun 的回复:
现在手头没有代码。
以前用这种方式做过在OVERLAY表面上叠加文字。

思路很简单,设置OVERLAY色键,把视频窗口背景刷为色键的颜色,
需要叠加的文字等设置为非色键颜色,然后直接画在视频窗口即可。


色键还不是太明白~~


那就放弃DDRAW吧,限制很多,还很麻烦。


用D3……
[/Quote]

是我就是加個透明层而已,呵呵~
dengzikun 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 abo77281 的回复:]
引用 15 楼 dengzikun 的回复:
现在手头没有代码。
以前用这种方式做过在OVERLAY表面上叠加文字。

思路很简单,设置OVERLAY色键,把视频窗口背景刷为色键的颜色,
需要叠加的文字等设置为非色键颜色,然后直接画在视频窗口即可。


色键还不是太明白~~
[/Quote]

那就放弃DDRAW吧,限制很多,还很麻烦。
用D3D吧。
参考 http://blog.csdn.net/dengzikun/archive/2010/08/19/5824874.aspx
abo77281 2010-11-02
  • 打赏
  • 举报
回复
uping!
abo77281 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 brianzhuang007 的回复:]
不想加入视频流里面显示的话,在上面盖个透明窗口,在窗口上画。
[/Quote]

g_pDDSPrimary为主表面,我的视频显示在这个上面
g_pDDSOverlay主要是画些标志,现在在个overlay不知道怎么设置才能设成透明的?

您的意思是不是从新创建个Window,这个window是透明的?

brianzhuang007 2010-11-01
  • 打赏
  • 举报
回复
不想加入视频流里面显示的话,在上面盖个透明窗口,在窗口上画。
abo77281 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 dengzikun 的回复:]
现在手头没有代码。
以前用这种方式做过在OVERLAY表面上叠加文字。

思路很简单,设置OVERLAY色键,把视频窗口背景刷为色键的颜色,
需要叠加的文字等设置为非色键颜色,然后直接画在视频窗口即可。
[/Quote]

色键还不是太明白~~
dengzikun 2010-11-01
  • 打赏
  • 举报
回复
现在手头没有代码。
以前用这种方式做过在OVERLAY表面上叠加文字。

思路很简单,设置OVERLAY色键,把视频窗口背景刷为色键的颜色,
需要叠加的文字等设置为非色键颜色,然后直接画在视频窗口即可。
abo77281 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dengzikun 的回复:]
画在窗口上,然后用OVERLAY色键显示。
[/Quote]

有沒有例子?
呵呵!
abo77281 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zgl7903 的回复:]
引用 9 楼 zgl7903 的回复:
SetBkMode(hDC, TRANSPARENT)

你放到哪里了 贴完整代码
[/Quote]



if (g_pDDSOverlay->GetDC(&hdc) == DD_OK)
{

SetBkMode(hDC, TRANSPARENT);//写字
//SetBkColor( hdc, RGB( 0, 0, 255 ) );
SetTextColor( hdc, RGB( 255, 255, 0 ) );
DrawText(hdc, szFrontMsg, -1, &m_TextShowRect, DT_WORDBREAK|DT_TOP|DT_LEFT);

//画线
MoveToEx(hdc,20,20,NULL);
LineTo(hdc,50,50);

g_pDDSOverlay->ReleaseDC(hdc);
}
RECT rs,rd;

rs.left = 0;
rs.top = 0;
rs.bottom = 100;
rs.right = 100;

rd.left = 0;//m_iDstX;
rd.top = 0;//m_iDstY;
rd.bottom = rd.top + 100;
rd.right = rd.left + 100;

g_pDDSOverlay->UpdateOverlay(&rs, g_pDDSPrimary, &rd, DDOVER_SHOW|DDOVER_KEYDESTOVERRIDE , NULL);
dengzikun 2010-11-01
  • 打赏
  • 举报
回复
画在窗口上,然后用OVERLAY色键显示。
zgl7903 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zgl7903 的回复:]
SetBkMode(hDC, TRANSPARENT)
[/Quote]
你放到哪里了 贴完整代码
abo77281 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zgl7903 的回复:]
SetBkMode(hDC, TRANSPARENT)
[/Quote]

还是一样的效果,在那区块,底色还是乱的颜色。
没有把视频显示出来!

是不是配置有问题?

// Get normal mode
hRet = g_pDD->SetCooperativeLevel(m_hWnd, DDSCL_NORMAL);
zgl7903 2010-11-01
  • 打赏
  • 举报
回复
SetBkMode(hDC, TRANSPARENT)
abo77281 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaohuh421 的回复:]
没有设置成透明吧.
把dc背景设置成透明,
[/Quote]

不知道怎样设置,请指教,呵呵!
我code:

if (g_pDDSOverlay->GetDC(&hdc) == DD_OK)
{
//写字
//SetBkColor( hdc, RGB( 0, 0, 255 ) );
SetTextColor( hdc, RGB( 255, 255, 0 ) );
DrawText(hdc, szFrontMsg, -1, &m_TextShowRect, DT_WORDBREAK|DT_TOP|DT_LEFT);

//画线
MoveToEx(hdc,20,20,NULL);
LineTo(hdc,50,50);

g_pDDSOverlay->ReleaseDC(hdc);
}
RECT rs,rd;

rs.left = 0;
rs.top = 0;
rs.bottom = 100;
rs.right = 100;

rd.left = 0;//m_iDstX;
rd.top = 0;//m_iDstY;
rd.bottom = rd.top + 100;
rd.right = rd.left + 100;

g_pDDSOverlay->UpdateOverlay(&rs, g_pDDSPrimary, &rd, DDOVER_SHOW|DDOVER_KEYDESTOVERRIDE , NULL);

我的overlay区在primary的上面(0,0,100,100)的地方,这样code显示的结果:除了字可以显示出来,而且字的底色是白的,还能画出一条黑线。但是在这个rect下面的其他部分是乱的颜色。
xiaohuh421 2010-11-01
  • 打赏
  • 举报
回复
没有设置成透明吧.
把dc背景设置成透明,
abo77281 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zgl7903 的回复:]
if(pDDSOverlay)
{
HDC hDC = g_pDDSOverlay->GetDC();

//有了DC句柄应该会玩了吧?

g_pDDSOverlay->ReleaseDC(hDC);
}
[/Quote]

謝謝!
我得到这个句柄,可以在Overlay上面写字,加位图,但是这个指示在Overlay的那个rect上面操作。
中间画个十字叉,那个rect下面的视屏就显示不出来了。

不知道有么有其它的办法?


zgl7903 2010-11-01
  • 打赏
  • 举报
回复
if(pDDSOverlay)
{
HDC hDC = g_pDDSOverlay->GetDC();

//有了DC句柄应该会玩了吧?

g_pDDSOverlay->ReleaseDC(hDC);
}
内容概要:本文系统研究了谐振式双有源桥(DAB)变换器的无传感模型预测控制(MPC)方法,旨在通过Simulink仿真平台实现无需电流传感器的高性能控制策略,从而提升系统可靠性并降低硬件成本。研究深入分析了串联谐振型DAB变换器的工作原理与数学建模过程,构建了完整的无电流传感MPC控制框架,重点解决了系统状态观测、预测模型构建、控制律设计及稳定性保障等关键问题。文中详细阐述了状态观测器的设计原理,实现了对关键电流状态的精确估计,并结合模型预测控制算法优化动态响应性能,有效应对功率波动与负载变化。通过对闭环系统的仿真验证,充分展示了该方法在动态性能、鲁棒性与控制精度方面的优越表现,为电力电子系统中先进控制策略的应用提供了可复现的技术路径。; 适合人群:具备电力电子技术、自动控制理论及Simulink仿真基础,从事新能源发电、储能系统、电动汽车、直流微网等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目:①研究无电流传感器条件下高动态性能DAB变换器的控制方案设计;②掌握模型预测控制与状态观测器在电力变换系统中的集成方法;③通过Simulink仿真复现先进控制策略,支撑高水平科研论文撰写、课题申报或实际工程项目开发。; 阅读建议:建议结合所提供的Simulink仿真模型进行动手实践,重点关注状态观测器与MPC控制器的参数设计与耦合关系,对照文中“完美复现”案例逐步调试,深入理解控制算法的实现细节与性能优化方法,以全面提升理论分析与工程应用能力。
内容概要:本文介绍了基于盛科CTC2118交换芯片及配套CTC21108 PHY套片设计的一款千兆以太网L2层交换产品,具备24个电口和4个光口,专为军工、武警、电力、铁路等高端工业领域打造。产品具有高可靠性、国产化、强固等特点,支持宽温工作环境(-40℃~85℃/-40℃~70℃),采用强抗震高密度高速连接器,适用于车载、舰载、列车及电力等严苛应用场景。产品可适配固型1U上架或防水型外壳,并支持根据用户需求进行载板定制或全定制设计。技术参数涵盖主控芯片、端口速率、光纤类型、供电电压及固件在线升级等功能。; 适合人群:从事军工、交通、能源等领域网络设备研发与集成的硬件工程师、系统架构师及技术决策人员;需要国产化、高可靠网络解决方案的行业用户。; 使用场景及目:①应用于航空、航天、轨道交通等对环境适应性和稳定性要求高的场景;②满足电力、铁路等行业对千兆以太网交换能力及国产化合规性的需求;③作为核心通信模块部署于车载、舰载等振动强烈、温差大的复杂环境中; 阅读建议:重点关注产品的国产化配置、宽温性能与机械固设计,结合实际项目需求选择合适型号,并利用其可定制特性优化系统集成方案。
内容概要:本文主要介绍了基于Simulink的三相电压型PWM整流器的建模与仿真研究,重点实现了PI双闭环控制结合解耦控制策略,并针对第四象限运行工况(即电动机回馈制动状态)进行了深入分析,其中直流侧电流呈现反向流动特性。通过仿真平台对系统在能量回馈状态下的动态响应、稳态性能及控制精度进行全面验证,展示了电流反向流动时的电压电流波形变化规律,体现了控制策略的有效性与系统运行的稳定性。该研究对于提升电力电子变换器在再生制动、可再生能源并网等应用场景中的能量转换效率和电能质量具有重要意义。; 适合人群:具备电力电子、自动控制理论基础,从事电气工程、新能源变换系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目:①掌握三相PWM整流器在第四象限的能量回馈机理与运行特性;②理解PI双闭环与解耦控制的设计思路与实现方法;③学习Simulink环境下电力电子系统的建模、仿真与分析流程;④为实际工程中逆变器、变频器、储能变流器等设备的控制策略开发提供参考。; 阅读建议:建议结合电力电子技术、现代控制理论相关教材进行系统学习,重点关注坐变换(如abc/dq变换)、控制器参数整定及仿真模型搭建细节,动手复现仿真模型以深对控制逻辑与系统动态行为的理解。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧