DirectShow视频旋转90度的filter重影条纹问题

hongxi1983 2014-09-28 12:31:58
从EZRGB24例子修改的代码,可以实现视频翻转。但是视频旋转90度的实现时,图像出现多个重影,并且都是条纹状的。估计旋转处理的代码没问题。因为在Receive函数中修改视频的宽高(视频窗口的宽高没有改变)后,即使是原来运行正常的视频图像,也会同样出现重影和条纹。
我尝试修改旋转视频后的窗口宽高总是不能实现,不知道在哪里修改。论坛里有个PropPage.ax可以实现视频图像的90度旋转,但是没有源码,而且存在小问题,旋转后的视频,会间隔几秒后出现停顿的问题,而且在graphedit中运行时cpu占用率比较高。
...全文
417 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pisvs09 2016-04-18
  • 打赏
  • 举报
回复
不知道楼主解决了吗?怎么解决的
tingtings324 2015-06-15
  • 打赏
  • 举报
回复
楼主万福,不知道这个视频旋转的功能做好了吗?好了的话能指教一下吗。我也看了好多天的文档还有这个传说中的EZRGB24demo,但是还是不知道怎么下手,新手太菜。万望指教呀
hongxi1983 2014-10-01
  • 打赏
  • 举报
回复
努力研读测试了几天没有改善啊
hongxi1983 2014-09-30
  • 打赏
  • 举报
回复
不知道里面的奥秘究竟在哪里
hongxi1983 2014-09-30
  • 打赏
  • 举报
回复
感谢Evankaka! 这个函数是在Transform中调用吗?这个函数实现了图像的旋转,要使视频图像正确显示在窗口上,是不是还需要做其他方面的处理和修改,例如宽高比转换。我调整宽高尺寸的代码总是不起作用,也不知何故。测试了下,如果窗口尺寸不正确,即使在Transform中代码是正确的,最后显示的图像也是失真的,例如条纹重影。 感觉DirectDraw的运行机制有些复杂,新手掌握起来难度比较大。
Evankaka 2014-09-29
  • 打赏
  • 举报
回复
我写过的代码。。 bool rgb24_rotate_90(unsigned char *src_rgb,unsigned int iWidth,unsigned int iHeight,bool direction) { if(!src_rgb) return false; unsigned int n=0; unsigned int linesize=iWidth*3; unsigned char *dst_rgb = (unsigned char*)malloc(iWidth*iHeight*3); int i,j; if(direction) { for(j=iWidth;j>0;j--) for(i=0;i<iHeight;i++) { memcpy(&dst_rgb[n],&src_rgb[linesize*i+j*3-3],3); n+=3; } } else { for(j=0;j<iWidth;j++) for(i=iHeight;i>0;i--) { memcpy(&dst_rgb[n],&src_rgb[linesize*(i-1)+j*3-3],3); n+=3; } } memcpy(src_rgb ,dst_rgb ,iWidth*iHeight*3); // itmp = iLBytes*iHeight; free(dst_rgb); return true; }
hongxi1983 2014-09-29
  • 打赏
  • 举报
回复
期盼高手出没,雪中送炭
hongxi1983 2014-09-29
  • 打赏
  • 举报
回复
大家都忙啊,自己顶一下
hongxi1983 2014-09-28
  • 打赏
  • 举报
回复
希望高手能指点一二,不胜感激

19,468

社区成员

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

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