C#调用摄像头的方式

本文将讲诉在C#的winform程序中如何调用摄像头:

1.调用USB摄像头

2.调用普通IP摄像头

3.通过摄像头SDK进行调用

使用的DLL

首先给上我所使用的DLL

调用USB摄像头

调用USB摄像头其实比较简单,就是通过读取电脑自身所拥有的设备数,再执行预览。

videoSourcePlayer是AForge中的控件。

private FilterInfoCollection videoDevices;

this.videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

if (this.videoDevices.Count > 0)

{

VideoCaptureDevice source = new VideoCaptureDevice(this.videoDevices[0].MonikerString);

this.videoSourcePlayer.SignalToStop();

this.videoSourcePlayer.WaitForStop();

this.videoSourcePlayer.VideoSource = source;

this.videoSourcePlayer.Start();

}

调用普通IP摄像头

首先要确认HTTP方式传送的图片的地址,我用的SAMSUN地址是http://{0}/cgi-bin/video.cgi?msubmenu=jpg,还有其他的http://{0}/axis-cgi/jpg/image.cgi?camera=1

使用JPEGStream或者MJPEGStream,有用户名和密码的就加上。有了source其他的和上面USB一样。

JPEGStream source = new JPEGStream(URL);

//MJPEGStream source = new MJPEGStream(URL);

source.Login = username;

source.Password = password;

this.OpenVideoSource(source);

通过摄像头SDK进行调用

这个调用还是很简单的,一般都是使用控件的Handle来进行预览的,我们可能会想取每一帧的图片,那么如何取得每一帧呢?因为是通过Handle来预览的所以控件中无法取得,我们需要调用摄像头SDK的获取每一帧的接口,但是这个接口是直接将图片保存到本地的,感觉巨坑有木有。不过我们还是有方法处理的。下面是我对三星摄像头的处理:

public override Bitmap CapturePicture()

{

Bitmap bitmap = null;

string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Templates) + @"\SAMSUNG_CapturePicture.bmp";

if (File.Exists(path))

{

File.Delete(path);

}

if (SSNetSDK.XNS_DEV_SaveSnapshot(playHandle, path,0))

{

using (MemoryStream stream = new MemoryStream(File.ReadAllBytes(path)))

{

bitmap = (Bitmap)Image.FromStream(stream);

}

File.Delete(path);

}

return bitmap;

}

软件c#语言调用摄像头,C#调用摄像头的几种方式相关推荐

  1. linux exec 脚本之家,详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...

  2. c语言返回二叉树的大小,C语言中计算二叉树的宽度的两种方式

    C语言中计算二叉树的宽度的两种方式 二叉树作为一种很特殊的数据结构,功能上有很大的作用!今天就来看看怎么计算一个二叉树的最大的宽度吧. 采用递归方式 下面是代码内容: int GetMaxWidth( ...

  3. C语言的二维数组初始化的几种方式介绍(私藏大数组初始化方式)

    C语言的二维数组初始化的几种方式介绍 1.直接赋值 2.循环对每个元素赋值 3.借用memset/memset_s初始化为0或-1 4.`数组所有元素初始化为相同值(用于大数组初始化贼方便)` 1.直 ...

  4. C语言中存储多个字符串的两种方式

    C语言中存储多个字符串的两种方式 方式一 二维字符串数组 声明: char name[4][10] = { "Justinian", "Momo", " ...

  5. C++中调用DLL中的函数的两种方式

    一.DLL源文件: extern "C" __declspec(dllexport) int add(int a, int b) {return a + b; } 二.静态调用: ...

  6. 在 Shell 脚本中调用另一个 Shell 脚本的三种方式

    先来说一下主要以下有几种方式: fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. exec: exec path/to/foo.sh s ...

  7. 以太坊智能合约交互调用,web3.js,web3j两种方式实现

    导语 接上篇文章 <使用hardhat部署solidity智能合约到测试网> 部署完合约之后,那么如何区块链进行交互呢?这节的主要内容就是使用web3.js和web3j来与区块链以及链上的 ...

  8. C语言实现链表的逆序的几种方式

    文章目录 通过头插法实现的 通过双指针实现链表的逆序 通过栈来实现的 通过递归来实现 通过头插法实现的 1.通过头插法(两条链表)来实现的.通过遍历原来的链表,将遍历得到的每一个节点都插入到新链表的头 ...

  9. Java调用.Net的web service的几种方式

    最近做项目,涉及到web-service调用,现学了一个星期,现简单的做一个小结.下面实现的是对传喜物流系统( http://vip.cxcod.com/PodApi/GetPodStr.asmx?w ...

  10. java new class 直接调用_java中创建对象的的两种方式具体解释,一个是new一个是调用Class类的newinstance方法?...

    展开全部 1.new 使用java的关键字new来创建对象实例.构造函数链中的所有构造函数都32313133353236313431303231363533e78988e69d833133333739 ...

最新文章

  1. 定制Apache索引样式
  2. 连接远程数据库ORACLE11g,错误百出!
  3. 如何在国内跑Kubernetes的minikube
  4. 常用知识总结——模板Template
  5. uniapp 开发h5 优化加载速度
  6. logging模块(二十六)
  7. 服务器双硬盘系统安装系统安装,固态机械混合安装教程!双硬盘安装系统的方法...
  8. 使用Arduino Pro Mini和BC95-B5连接物联网
  9. 会计与计算机融合的会计论文,管理会计与财务会计融合浅析论文
  10. sql 创建学生表 课程表 成绩表
  11. python后端 工作 知乎_[Python]知乎后端实习生面试心得
  12. python提取电子发票_Python办公自动化—电子发票台账制作自动化(3)
  13. 学生信息管理系统代码全篇
  14. DockOne微信分享(一三四):国内某大型酒店管理集团基于Kubernetes的实践
  15. 基于MATLAB的农业病虫害识别系统
  16. Swift5.1 语言指南(三) 快速之旅
  17. 分享一个前两天写的自动监控blocking 的脚本(基于12C)
  18. 【我的生活】旅游计划--2019
  19. matlab二维、三维矩阵转换、排序、转置等问题
  20. 使用while循环方式打印100以内4的倍数(while中加if)、使用while循环方式计算2+4+6+8+...+100、编写程序“从键盘读入个数不正确的整数,并判断读入的正数和负数的个数

热门文章

  1. how is OData url select option implemented in the backend
  2. 推荐一个免费的在线图片工具网站
  3. 通过调试获得SAP Fiori gateway系统的系统ID
  4. 如何处理APF框架的错误消息:Filter is too complex error
  5. SAP Fiori Launchpad launchpad Designer组件和configuration组件的重要存储表一览
  6. Cloud for Customer Mashup debug in IFrame
  7. 什么是工资单上的variable pay mix?
  8. python数据分析图表展示_1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源...
  9. linux防火墙没看3306访问不,Linux配置防火墙,开启80端口、3306端口
  10. 平衡树-Treap基础内容