using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Touchless.Vision.Camera;namespace Demo{ public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { if (!DesignMode) { // Refresh the list of available cameras comboBoxCameras.Items.Clear(); foreach (Camera cam in CameraService.AvailableCameras) comboBoxCameras.Items.Add(cam); if (comboBoxCameras.Items.Count > 0) comboBoxCameras.SelectedIndex = 0; } } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { thrashOldCamera(); } private void btnStop_Click(object sender, EventArgs e) { thrashOldCamera(); } private CameraFrameSource _frameSource; private static Bitmap _latestFrame; private void btnStart_Click(object sender, EventArgs e) { // Early return if we've selected the current camera if (_frameSource != null && _frameSource.Camera == comboBoxCameras.SelectedItem) return; thrashOldCamera(); startCapturing(); } private void startCapturing() { try { Camera c = (Camera)comboBoxCameras.SelectedItem; setFrameSource(new CameraFrameSource(c)); _frameSource.Camera.CaptureWidth = 320; _frameSource.Camera.CaptureHeight = 240; _frameSource.Camera.Fps = 20; _frameSource.NewFrame = OnImageCaptured; pictureBoxDisplay.Paint = new PaintEventHandler(drawLatestImage); _frameSource.StartFrameCapture(); } catch (Exception ex) { comboBoxCameras.Text = "Select A Camera"; MessageBox.Show(ex.Message); } } private void drawLatestImage(object sender, PaintEventArgs e) { if (_latestFrame != null) { // Draw the latest image from the active camera e.Graphics.DrawImage(_latestFrame, 0, 0, _latestFrame.Width, _latestFrame.Height); } } public void OnImageCaptured(Touchless.Vision.Contracts.IFrameSource frameSource, Touchless.Vision.Contracts.Frame frame, double fps) { _latestFrame = frame.Image; pictureBoxDisplay.Invalidate(); } private void setFrameSource(CameraFrameSource cameraFrameSource) { if (_frameSource == cameraFrameSource) return; _frameSource = cameraFrameSource; } // private void thrashOldCamera() { // Trash the old camera if (_frameSource != null) { _frameSource.NewFrame -= OnImageCaptured; _frameSource.Camera.Dispose(); setFrameSource(null); pictureBoxDisplay.Paint -= new PaintEventHandler(drawLatestImage); } } // private void btnSave_Click(object sender, EventArgs e) { if (_frameSource == null) return; Bitmap current = (Bitmap)_latestFrame.Clone(); using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Filter = "*.bmp|*.bmp"; if (sfd.ShowDialog() == DialogResult.OK) { current.Save(sfd.FileName); } } current.Dispose(); } private void btnConfig_Click(object sender, EventArgs e) { // snap camera if (_frameSource != null) _frameSource.Camera.ShowPropertiesDialog(); } }}
下载C#摄像头拍照(WebCamCSharp)用户还喜欢
- 18480 文章数
- 500万+ 热度
作者专栏
编辑推荐
- 淡抹u2引擎,修复内容较多,物有所值
- 界域传说·经典巨作=传世单机(一键安装)
- 丸子版本(175个传世版本大集合)
- GS版本:神话公益服务端+客户端
- 图片放大工具(放大图片不模糊)
- 剪映无限制VIP版
- 传奇世界客户端下载器,史上最全传世客户端
- 传世GS20220920商业引擎注册+登录配置器 解压密码是1
- U2官方排行榜游戏网关 支持元神,支持传家宝
- GS开战传世客户端+服务端
- (淡漠夕阳)u2引擎合区工具
- 传世GS引擎消除“你的游戏客户端版本号过旧,请及时更新”提示
- 传世一机多区双线路配置器--免密码版本
- 传世凤凰登陆器劫持修复软件
- SQLite3 for Navicat
- 传奇世界npc对话框编辑工具
- 传世GS落霞铭文服务器端
- gs_20210409引擎包+注册机(无限制)
- 传奇世界NPC对话封包查看器[支持时长版和极速版]
- 彩虹引擎传世脚本编辑工具1.7版来了,支持函数脚本翻译
评论