首页 新闻 会员 周边 捐助

C# 读取摄像头 老是显示黑色

0
悬赏园豆:5 [已解决问题] 解决于 2012-12-17 15:44

C# 读取摄像头老是显示黑色

 

public bool IsConnected { get; set; }
        //保存无符号句柄
        private IntPtr lwndC;
        //保存管理指示器
        private IntPtr mControlPtr;
        //摄像头显示宽度
        private int mWidth;
        //摄像头显示高度
        private int mHeight;
        public Camera(IntPtr handle, int width, int height)
        {
            //显示视频控件的句柄
            mControlPtr = handle;
            //视频宽度
            mWidth = width;
            //视频高度
            mHeight = height;
        }
        /// <summary>
        /// 打开视频设备
        /// </summary>
        public void StartWebCam()
        {
            byte[] lpszName = new byte[100];
            byte[] lpszVer = new byte[100];
            CameraWindowsAPI.capGetDriverDescriptionA(0, lpszName, 100, lpszVer, 100);
            this.lwndC = CameraWindowsAPI.capCreateCaptureWindowA(lpszName, CameraWindowsAPI.WS_CHILD | CameraWindowsAPI.WS_VISIBLE, 0, 0, mWidth, mHeight, mControlPtr, 0);
            if (CameraWindowsAPI.SendMessage(lwndC, CameraWindowsAPI.WM_CAP_DRIVER_CONNECT, 0, 0))
            {
                IsConnected = true;
                CameraWindowsAPI.SendMessage(lwndC, CameraWindowsAPI.WM_CAP_SET_PREVIEWRATE, 1, 0);
                CameraWindowsAPI.SendMessage(lwndC, CameraWindowsAPI.WM_CAP_SET_PREVIEW, true, 0);

                CameraWindowsAPI.SendMessage(lwndC, CameraWindowsAPI.WM_CAP_DRIVER_CONNECT, 0, 0);
            }
            else
            {
                IsConnected = false;
            }
        }
        /// <summary>
        /// 关闭视频设备
        /// </summary>
        public void CloseWebcam()
        {
            CameraWindowsAPI.SendMessage(lwndC, CameraWindowsAPI.WM_CAP_DRIVER_DISCONNECT, 0, 0);
        }
        ///   <summary>  
        ///   拍照
        ///   </summary>  
        ///   <param   name="path">要保存bmp文件的路径</param>  
        public void GrabImage(IntPtr hWndC, string path)
        {
            IntPtr hBmp = Marshal.StringToHGlobalAnsi(path);
            CameraWindowsAPI.SendMessage(lwndC, CameraWindowsAPI.WM_CAP_SAVEDIB, 0, hBmp.ToInt32());
        }

问题补充:

如图

流浪命的主页 流浪命 | 初学一级 | 园豆:28
提问于:2012-12-10 15:06
< >
分享
最佳答案
0

唉。。看来没有人回答上来。。。这个问题是我的机子安装的一个程序的问题。

流浪命 | 初学一级 |园豆:28 | 2012-12-17 15:43
其他回答(1)
1

麻烦您说清楚点,到底是什么问题,我现在遇到了同样的问题,你说的程序是指什么程序,急求,谢谢

咸殇 | 园豆:202 (菜鸟二级) | 2012-12-23 21:49

我把机子上面的一个编码器卸载了就没有问题了。具体的我忘记了。sorry.

支持(0) 反对(0) 流浪命 | 园豆:28 (初学一级) | 2012-12-24 17:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册