rockcarry / fanplayer

A portable video player based on ffmpeg for windows and android platform.
GNU Lesser General Public License v3.0
606 stars 161 forks source link

求教如何在视频里画矩形框 #40

Open zslovelq opened 3 years ago

zslovelq commented 3 years ago

我的需求是这样的,RTSP流里面有SEI帧,里面有人或者其他物体的检测结果。 现在我能够读取sei帧,不知道在哪里显示。 在Qt的Paint消息里绘制会被视频给冲掉,完全看不到,只能在视频渲染部分添加了。 在这个vdev-d3d.c里 static void d3d_draw_surf(VDEVD3DCTXT *c, LPDIRECT3DSURFACE9 surf)函数里,模仿你的代码写的绘制函数没有效果。 对D3D和GDI不熟。请大神指教。 比如已知一个RECT r={10,10,100,100},怎么把r显示出来?

rockcarry commented 3 years ago

使用 overlay 功能就可以了。你可以参考 testplayer 里面的文字显示,和鼠标右键拖选放大的实现。

zslovelq commented 3 years ago

谢谢.在1.6.10版本上添加的代码,已经能正常显示人流检测框。 还有一个问题需要请教。 如果直接硬解出来,画面锐度很高,看着很清晰,缺点是有锯齿。 如果增加矩形框的图层,画面就模糊一些,没有锯齿。 这是什么原因呢? 不带框 带框 这个红框只是随意编造的测试数据。

zslovelq commented 3 years ago

image 这是在vdev-d3d.c文件,d3d_draw_surf函数里修改的代码

rockcarry commented 3 years ago

应该是调用 IDirect3DDevice9_StretchRect 这个接口,做了缩放导致的。你试下改下参数 D3DTEXF_POINT 为 D3DTEXF_LINEAR