C# 如何调用笔记本摄像头

草言 2012-12-07 04:54:17
我用avicap32.dll,但是不出图像,黑色一块,貌似有人说这个dll只支持有驱动的报像头,不支持即插即用摄像头,也不知道是真是假,请问如何才能控制笔记本自带集成的摄像头!高手指教!
...全文
776 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一零一二 2012-12-07
  • 打赏
  • 举报
回复
看看AForge.NET,其中专门有video模块!下面代码是一个测试的窗体,没注释,不好意思! AForge.NET一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using AForge.Video;
using AForge.Video.DirectShow;
using System.Runtime.InteropServices;
namespace Demo_jq
{
    public partial class VideoForm : DevExpress.XtraEditors.XtraForm
    {
        FilterInfoCollection videoDevices;
         //处理窗体的移动
        [DllImport("User32.dll")]
        public static extern bool ReleaseCapture();
        [DllImport("User32.dll")]
        public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
        //API中用到的常量
        const int WM_SYSCOMMAND = 0x0112;
        const int SC_MOVE = 0xf010;
        const int HTCAPTION = 0x0002;
        public VideoForm()
        {
            InitializeComponent();
        }

        private void VideoForm_Load(object sender, EventArgs e)
        {
            videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        

            VideoCaptureDevice videoSource1 = new VideoCaptureDevice(videoDevices[0].MonikerString);
            videoSource1.DesiredFrameRate = 100;

            videoSourcePlayer1.VideoSource = videoSource1;
            videoSourcePlayer1.Start();
       
        }

        private void VideoForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            videoSourcePlayer1.SignalToStop();
            videoSourcePlayer1.WaitForStop();
            this.Dispose();
        }

        private void videoSourcePlayer1_MouseDown(object sender, MouseEventArgs e)
        {
              ReleaseCapture();
            SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
        }

        private void VideoForm_MouseDown(object sender, MouseEventArgs e)
        {
             ReleaseCapture();
            SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
        }

      
    }
}
changjiangk 2012-12-07
  • 打赏
  • 举报
回复
我也很好奇~~~
zggzcgy 2012-12-07
  • 打赏
  • 举报
回复
这个问题值得深思,待我学业有成后,定给你解决!
草言 2012-12-07
  • 打赏
  • 举报
回复
jkffklejk 2012-12-07
  • 打赏
  • 举报
回复
这问题有意思,顶一下
草言 2012-12-07
  • 打赏
  • 举报
回复
大神们都吃饭去了吗

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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