一、DirectShow opencv 什么关系
DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM(Component Object Model)的流媒体处理的开发包,与DirectX开发包一起发布。而OpenCV是一个计算机视觉的处理库,被广泛应用到各种计算机视觉的研究和应用当中。OpenCV可以利用DirectShow来采集摄像头视频,这比采用OpenCV里的采集视频数据函数要好用。这是我个人的看法。
二、使用c#的directshowLib 直接播放yuv的参数设置
那是因为C++与C#中的数据类型不对应而照成的。你可以使用C#调用C++ DLL的导出函数,在你的C#中实现即可。C++的导出函数一般在SDK中会详细说明,你对着改抄就可以了。下面给点例子:例如:C++的导出函数为:long WINAPI LoadDRV(void);你在C#中使用对应的方式声明这个函数的对应函数[DllImport("Tc08a32.dll", EntryPoint="LoadDRV", CharSet= CharSet.Auto, CallingConvention= CallingConvention.StdCall)]
public static extern Int32 LoadDRV();DllImport的语法你可以在MSDN上面找到详细的说明,这里对给出的示例做一下简单的说明括号中的第一个String参数是表明你要导入的DLL的目标路径,可以是别人C++导出函数的路径EntryPoint设置后,可以主动的搜索入口函数,可要可不要。CharSet是设置你接收时的字符类型的,这个很重要,某些时候,通过改变这个值的设置可以得到你的理想值。CallingConvention是指的一个导出标准,一般在C++的SDK中也可以看到这种导出标准,是什么,就对应的用什么。注意使用时的类型转换,因为变量的类型不同,则使用不同的对应关系,这个网上也有很多的介绍,很简单。唯一需要注意的是一些指针类型,因为C#为安全机制没有指针一般的,C++中的 Char*在C#中可以使用一个String来传值如果是LPSTR的话,那就需要使用一个char[]来实现,具体char[]有多长,你要根据你的SDK中的说明具体实现。实现完你需要的函数之后,你即可在你的项目中调用了。
好了,文章到这里就结束啦,如果本次分享的【精选】DirectShow介绍-1和DirectShow opencv 什么关系问题对您有所帮助,还望关注下本站哦!