回 帖 发 新 帖 刷新版面

主题:C#如何同时使用两个摄像头?

下面是使用一个摄像头的代码:
private void OpenCapture()
        {

            int intWidth = this.panel1.Width;
            int intHeight = this.panel1.Height;
            int intDevice = 0;
       
            string refDevice = intDevice.ToString();
            // hHwnd = Camera.capCreateCaptureWindowA(ref   refDevice, 1342177280, 0, 0, 640, 480, this.panel1.Handle.ToInt32(), 0);
            hHwnd = Camera1.capCreateCaptureWindowA(ref   refDevice, 1342177280, 0, 0, 640, 480, this.panel1.Handle.ToInt32(), 0);
       
            if (Camera1.SendMessage(hHwnd, 0x40a, 0, 0) > 0)
            {
                Camera1.SendMessage(this.hHwnd, 0x435, -1, 0);
                Camera1.SendMessage(this.hHwnd, 0x434, 0x42, 0);
                Camera1.SendMessage(this.hHwnd, 0x432, -1, 0);
                Camera1.SetWindowPos(this.hHwnd, 1, 0, 0, intWidth, intHeight, 6);
            }
            else
            {
                Camera1.DestroyWindow(this.hHwnd);
            }
        }

但是我想同时使用两个摄像头,请问大家几个问题:
1、int intDevice = 0;是什么意思?起初我猜测0表示第一个摄像头,那么1不就表示第二个摄像头吗?经过我的尝试发现并非如此,那么0到底是什么意思呢?
2、hHwnd = Camera1.capCreateCaptureWindowA(ref refDevice, 1342177280, 0, 0, 640, 480, this.panel1.Handle.ToInt32(), 0);各个参数的含义,这个我从msdn中查到了,但是对于第二个参数和最后一个参数还是不理解,希望大家给以解答。
3、Camera1.SendMessage(hHwnd, 0x40a, 0, 0),第一个参数是句柄,第二个参数表示的是一个消息,是哪个消息呢?后两个参数是到底为消息提供什么样的东西呢?
4、 Camera1.SendMessage(this.hHwnd, 0x435, -1, 0);
  Camera1.SendMessage(this.hHwnd, 0x434, 0x42, 0);
  Camera1.SendMessage(this.hHwnd, 0x432, -1, 0);
分别表示的意思是什么?
5、在一个程序中,能不能同时使用两个摄像头,需不需要第三方软件的支持?

问题有点多,希望大家见谅!谢谢!

回复列表 (共3个回复)

沙发

据我了解,c#的多媒体开发包directshow可以实现两个摄像头同时连接。、int intDevice = 0。代表的是第一块视频采集卡,不是摄像头。

板凳

好高深,等高手讲解一下~~~~~~~~~~~

3 楼

[url=http://www.dotnetsz.com/]http://www.dotnetsz.com/[/url] 学习.NET 技术的第一站,一步步帮你从编程入门走向.net编程高手

我来回复

您尚未登录,请登录后再回复。点此登录或注册