最近在弄OV3640驱动,驱动完成后,图像和屏之间旋转了90°,240*320的屏幕,图像显示是320*240,要将图像顺时针旋转90才正常,网上搜了一大片,有用inter ipp中的旋转函数的,也有在上层应用软件中,加TransformFilter的,inter ipp 和direct show 咱都不会呀,网上下了个CameraCap.rar,下载地址:http://dev.10086.cn/cmdn/bbs/thread-17576-1-1.html 这个程序已经实现了fitter旋转90°,现在的要求是把这个fitter 移植到自己的应用程序上,当然应用程序都是基于direct show的,移植过程中出现的问题如下:
错误1;1>e:\vc++ test\camerademo test\camerademo\RotateFilter.h(8) : error C2504: 'CTransformFilter' : base class undefined
产生错误的原因:没有包含相应的头文件;
解决办法:加 #include "Dshow.h"
#include "Streams.h"
再编译后会出现错误2:RotateFilter.obj : error LNK2019: 无法解析的外部符号 "public: unsigned long __cdecl CMediaType::GetSampleSize(void)const " (?GetSampleSize@CMediaType@@QBAKXZ),该符号在函数 "public: virtual long __cdecl CCRotateFilter::DecideBufferSize(struct IMemAllocator *,struct _AllocatorProperties *)" (?DecideBufferSize@CCRotateFilter@@UAAJPAUIMemAllocator@@PAU_AllocatorProperties@@@Z) 中被引用
1>UT_S3C6410_SDK (ARMV4I)\Debug\CameraDemo.exe : fatal error LNK1120: 1 个无法解析的外部命令
产生原因:未添加direct show 的库。
解决办法:
Project->properties->configuration properties->linker->Input下添加:
Additional Dependencies: strmbase.lib strmiids.lib commdlg.lib,
再次编译
出现类似下面这类问题;
无法解析的外部符号 "public: virtual unsigned long __cdecl CBaseFilter::NonDelegatingRelease(void)" (?NonDelegatingRelease@CBaseFilter@@UAAKXZ) 如果你遇到上面的错误,而且经过各种努力都无济于事,这个错误都一直存在,那么,啥也不说了,直接在这里下载这个库: http://www.alexfeinman.com/files/strmbase.zip 把你的原来的库文件替换掉。5.0:\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Lib\ARMV4I 6.0: \Program Files\Windows Mobile 6 SDK\PocketPC\Lib\Armv4i 将解压后的文件直接拷进去,替换掉,为了保险起见,先备份一下原来的文件。 原因:在于随SDK发布的这个strmbase的lib在debug模式下是错误的 |