Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【简单的CV】1.5 相机控制

【简单的CV】1.5 相机控制

作者头像
EdenChen
发布于 2019-11-06 05:32:33
发布于 2019-11-06 05:32:33
1.1K00
代码可运行
举报
文章被收录于专栏:ROBOTEDUROBOTEDU
运行总次数:0
代码可运行

1.5 相机控制

01

相机介绍

相机是利用光学成像的原理进行记录摄像的设备。

小孔成像原理和照相机原理

传统底片式相机结构

数码相机结构

相机技术由胶片向图像传感器的进化,极大的推动了摄像的普及。图像的载体由胶卷转变为计算机存储这也为计算器视觉的形成做了很重要的铺垫。

手机的相机结构

现代相机的结构大同小异,都是由支架+镜头+感光芯片+数电转化等组成。

感光芯片(CCD/CMOS) 主要关系图像的清晰度

镜头(LENS) 主要关系焦距和工作距离

02

工业相机

工业相机是一种特殊相机,它的结构原理与普通相机一致,一般工业相机具有方便集成,易于使用,稳定可靠的优点。我们案例中使用到的图片都由工业相机拍摄,也可以使用一般相机或者手机来拍照案例素材。简单介绍下我所使用的相机:

这是一个500W像素的工业相机,具体参数:

感兴趣的同学可以去某宝上搜索。注意:

  1. 一般工业相机的焦距都是可调的,改变焦距会改变当前对象的分辨率和相机的工作距离
  2. 此款的相机的分辨率越高,相机帧率越低

03

AFORGE介绍

本节案例选用的是C#支持的AFORGE.NET库,它可以支持我们简单的相机控制,图像处理。可以直接百度下载,也可以在文末点击蓝字“阅读原文”下载相关文档和资料。

下载完成后直接安装

在项目中引用相应的DLL,所有DLL都存放在你的安装目录下的Realase文件夹里面。

同时在工具中也添加对AFORGE的工具引用。

04

软体设计

目的:设计一个软件可以对相机进行操作,可以实现以下功能:

1. 可以甄别相机名称,并读取对应相机的视频流

2. 可以保存当前相机中的图片

软件界面设计

视频框使用的 AFORGE 的 videosourcePlay控件

图片框 使用的系统的Picturebox控件

单击开始,视频框开始实时读取相机图片

单击拍照,将图片保存到图片框中

简单的CV学习

05

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          //声明对象
        Bitmap bitmap; Bitmap bitmap1;
        System.Drawing.Image image;
        FilterInfoCollection videodevices;
        VideoCaptureDevice videodevice;
        VideoCapabilities[] videoCapabilities;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //连接按钮
        private void button1_Click(object sender, EventArgs e)//单击连接按钮
        {
            if (videodevice!=null)
            {
                if (videoCapabilities!=null&&videoCapabilities.Length!=0)
                {
                    videodevice.VideoResolution = videoCapabilities[listBox2.SelectedIndex];//确定分辨率
                    videoSourcePlayer1.VideoSource = videodevice;//设备选定到视频框
                    videoSourcePlayer1.Start();//开始播放视频
                    changecontrolstatus(false);//改变控件状态
                }
            }
        }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //拍照按钮
        private void button3_Click(object sender, EventArgs e)
        {
            bitmap = videoSourcePlayer1.GetCurrentVideoFrame();
            pictureBox1.Image = bitmap;
            //bitmap1 = bitmap.Clone(new Rectangle(new Point(0, 0), bitmap.Size), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            //AForge.Imaging.Filters.Grayscale grayscale = new AForge.Imaging.Filters.Grayscale(0.11, 0.59, 0.3);
            //bitmap1= grayscale.Apply(bitmap1);
            //AForge.Imaging.Filters.CannyEdgeDetector cannyEdge = new AForge.Imaging.Filters.CannyEdgeDetector();
            //cannyEdge.ApplyInPlace(bitmap1);
            //pictureBox2.Image = bitmap1;
        }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//断开按钮
        private void button2_Click(object sender, EventArgs e)
        {
            DisConnect();
            changecontrolstatus(true);
        }
        private void DisConnect()
        {
            if (videoSourcePlayer1.VideoSource != null)
            {
                videoSourcePlayer1.SignalToStop();
                videoSourcePlayer1.WaitForStop();
                videoSourcePlayer1.VideoSource = null;
            }
        }

注意:

  1. 改变按钮状态时为了避免按钮冲突,比如未连接时,拍照按钮应该处于不可使用状态;
  2. 软件时序逻辑:查找可用设备>获取设备信息>设置当前设备>传输视频信息>断开;

小结

1. 相机的构成和原理

2. 利用AFORGE库 对相机进行简单的控制

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ROBOTEDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用 AForge.NET 做视频采集
AForge.NET 是基于C#设计的,在计算机视觉和人工智能方向拥有很强大功能的框架。btw... it's an open source framework. 附上官网地址: http://www.aforgenet.com/aforge/framework/ 。 今天要介绍的是AForge中的视频采集功能,这里的视频包括从摄像头等设备的输入和从视频文件的输入。 首先来认识一下 视频源播放器:VideoSourcePlayer,从摄像头和文件输入的视频,都会通过它来播放,并按帧(Frame)来输出Bit
Shao Meng
2018/04/28
2.2K0
c# 利用AForge.NET组件操作摄像头
private FilterInfoCollection videoDevices;
用户5640963
2019/07/26
1.6K0
摄像头拍照功能是怎样实现的?自己动手做一个!
现如今,拍照已经融入我们的日常生活中了。我们在日常的工作生活中很多场景都会用到拍照功能。比如在登录网页或者设备时,密码错误进行拍照,防止被盗。日常进行图像识别或者图像处理前的图像获取。都需要用到我们的摄像头进行图像的获取。
跋扈洋
2021/07/19
9340
PictureForm.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Drawing.Imaging; using Packet; namespace TSProducer { pu
静默虚空
2022/05/07
2070
调用打印机拍照的工具类
using AForge.Controls; using AForge.Video; using AForge.Video.DirectShow; using Desktop.Protocol.Models.WhCommModels; using Destop.Infrastucture.Helper.Log; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System
kiki.
2022/09/29
5010
机器视觉工业缺陷检测(光源,相机,镜头,算法)
视觉工业检测大体分为工件尺寸测量与定位,和表面缺陷检测,及各种Logo标识的检测与识别等。
机器学习AI算法工程
2021/10/14
19K0
机器视觉工业缺陷检测(光源,相机,镜头,算法)
机器视觉系统之——镜头、相机介绍
1).分辨率(Resolution):相机每次采集图像的像素点数(Piels),对于数字工业相机机一般是直接与光电传感器的像元数对应的,对于模拟相机机则是取决于视频制式,PAL制为768*576,NTSC制为640*480。
AI机器视觉
2022/06/01
1.8K0
机器视觉系统之——镜头、相机介绍
太神奇了!使用C#实现自动核验健康码:(1)二维码识别
但是,单靠人工核验健康码容易造成人员拥堵,增加病毒交叉感染的风险,其实完全可以使用计算机来实现自动核验。
zls365
2021/09/02
2.6K0
太神奇了!使用C#实现自动核验健康码:(1)二维码识别
(干货) |机器视觉不可不知的相机内部工作原理
工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节,相机的选择不仅直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。 一. 相机的芯片类型: 一般情况下,工业相机按照芯片类型可以分为CCD相机和CMOS相机,当然也有一些其他的芯片,比如富士公司生产的Super CCD芯片。这里我们只讨论市场主流的CCD相机和CMOS相机的工作原理。数码相机的CCD和CMOS都深藏于相机内部,就算您有机会看到它们的样
智能算法
2018/04/03
2.7K0
(干货) |机器视觉不可不知的相机内部工作原理
【简单的CV】1.7 图像二值化
二值化图像是一种特殊的灰度度,它的像素只有两个值0或者1,这样一个像素点用一位(Bit)就可以表示。
EdenChen
2019/11/06
8150
【简单的CV】1.7 图像二值化
一文详解工业相机和镜头选取
一问价格,至少都是大几千,贵的在十几万,心里就不禁有疑问,就这么一个破相机,为啥就卖这么贵?它跟我们常见的单反相机有什么区别?我用单反相机来拍,色彩又好,成像又清晰,它不香吗?为啥一定要用工业相机?
3D视觉工坊
2020/12/11
1.6K0
一文详解工业相机和镜头选取
机器视觉(第4期)----工业相机综述及接口介绍
上期我们一起学习了镜头的相关知识,戳下链接: 机器视觉(第3期)----图像采集之镜头原理详述 这期我们一起学习相机和接口的相关知识,工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节,相机的选择不仅直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。 本期主要内容: 相机的芯片类型 黑白相机成像原理 彩色相机成像原理 相机接口类型 线阵和面阵相机 相机常见参数介绍 一. 相机的芯片类型 一般情况下,
智能算法
2018/04/03
1.6K0
机器视觉(第4期)----工业相机综述及接口介绍
使命必达: 深入剖析WCF的可靠会话[实例篇](内含美女图片,定力差者慎入)
通过前面一系列的博文(《WCF 并发(Concurrency)的本质》、《并发中的同步》、《实践重于理论》、《并发与实例上下文模式》、《回调与并发》、《ConcurrencyMode.Multiple 模式下的WCF服务就一定是并发执行的吗[上篇]》、《ConcurrencyMode.Multiple 模式下的WCF服务就一定是并发执行的吗[下篇]》、《控制并发访问的三道屏障[上篇]》和《控制并发访问的三道屏障[下篇]》),我对WCF的并发体系进行了深入的剖析,在接下来的博文中,我只要专注于WCF的可靠会话
蒋金楠
2018/01/16
1.2K0
使命必达: 深入剖析WCF的可靠会话[实例篇](内含美女图片,定力差者慎入)
【相机标定系列】相机sensor传感器尺寸,CMOS靶面尺寸,分辨​率​和​镜头​焦距,畸变处理效果,相机主点
https://blog.csdn.net/j_shui/article/details/77262947 https://www.ni.com/zh-cn/support/documentation/supplemental/18/calculating-camera-sensor-resolution-and-lens-focal-length.html#section-489585536
全栈程序员站长
2022/09/05
2.3K0
【相机标定系列】相机sensor传感器尺寸,CMOS靶面尺寸,分辨​率​和​镜头​焦距,畸变处理效果,相机主点
VB.NET 图片在图片框内缩放及移动
本方式是通过使用GDI+的方式在图片框内,绘制图片,并实现图片的放大,缩小,移动等操作!
办公魔盒
2023/03/02
1.5K0
VB.NET 图片在图片框内缩放及移动
Emgucv视频操作--进阶1
实现功能: 播放视频 提取每一帧图片并保存 显示视频播放的时间 videowrite 视频保存的方法还未调试成功,等待后续再继续研究! //---------------------------------------------------------------------------- // Copyright (C) 2004-2019 by EMGU Corporation. All rights reserved. //----------------------------
zls365
2020/08/19
1.4K0
Emgucv视频操作--进阶1
iOS-AVFoundation自定义相机详解
AVFoundation 中关于视频主要的类 目录 相机基本实现步骤 捕捉会话——AVCaptureSession 捕捉输入——AVCaptureDeviceInput 捕捉预览——AVCaptureVideoPreviewLayer/OpenGL ES 捕捉连接——AVCaptureConnection 拍照——AVCaptureStillImageOutput 音频——AVCaptureAudioDataOutput 视频——AVCaptureVideoDataOutput 生成视频文件——AVA
用户2215591
2018/06/29
2.8K0
Windows Forms:在C#中将图像转换成灰度图
本文翻译自Windows Forms: Convert an image into grayscale in C# 这篇文章向你展示在C# Windows窗体应用程序中如何将图像转换成灰度图。 创建一个新的Windows窗体应用程序项目,然后创建一个允许你可以打开图像,然后将图像转换成黑白图像的简单的UI,如下图所示:
ccf19881030
2021/03/02
1.8K0
Windows Forms:在C#中将图像转换成灰度图
cv图像翻转,EmguCV图像旋转「建议收藏」
i use this codeprivate void button12_Click(object sender, EventArgs e)
全栈程序员站长
2022/07/25
7790
相机光学杂文
我现在不知道我到底喜欢什么了?我好像喜欢一切和成像的东西~这篇文章全无条理,更加像是自己平时阅读的一个记录,可是在草稿箱也不便于阅读,整理一下发出来,标签打为杂文。
云深无际
2023/02/27
7390
相机光学杂文
相关推荐
使用 AForge.NET 做视频采集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档