初学视觉学习笔记----用摄像头获取图片
目标:
想要A,B两个窗口,A窗口实时显示相机的画面,当我按下照相按钮的时候,B窗口显示我捕获到的图片。
遇到的问题:
在A窗口 实时显示的时候 用到了while (true){ //视频显示}
因为要一直在A窗口显示画面,所以这个视频显示的循环永远跳不出去,此时我的 “获取图片”这个按钮是按不了的(此时程序一直都在执行while循环)
解决方法:
用多线程来解决。(在下还是个新手,是一边百度一遍自学,难免会有问题,请多包含,有问题欢迎提出批评)
我设置了一个"标志位" grabImg,当 grabImg为ture时,窗口B显示那一瞬间的图像,其余的时候都在窗口A显示图像。
这样就可以实现我的目标要求。
代码:
public partial class Form1 : Form
{
public delegate void FlushClient(); //创建一个委托线程
FlushClient fc;
public bool grabImg = false;
public int flag=0;
//halcon变量
public HTuple hv_ExpDefaultWinHandle1;
public HTuple hv_ExpDefaultWinHandle2;
public HObject ho_Image = null;
public HTuple hv_AcqHandle = null;
public HTuple hv_Width = new HTuple();
public HTuple hv_Height = new HTuple();
public Form1()
{
InitializeComponent();
}
//初始化相机
public void InitCamera()
{
hv_ExpDefaultWinHandle1 = hWindowControl1.HalconWindow; //显示窗口一
hv_ExpDefaultWinHandle2 = hWindowControl2.HalconWindow; //显示抓拍的窗口
HOperatorSet.GenEmptyObj(out ho_Image);
HOperatorSet.CloseAllFramegrabbers(); //在打开相机前最好先关闭所有相机,保证相机处于闲置状态。
HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb",
-1, "false", "default", "[1] USB Camera", 0, -1, out hv_AcqHandle);
hv_Height =480; //相机参数(我的USB相机是640X480的分辨率)
hv_Width =640 ;
HOperatorSet.SetPart(hv_ExpDefaultWinHandle1, 0, 0, hv_Height, hv_Width); //让图片完全占满控件的窗口
HOperatorSet.SetPart(hv_ExpDefaultWinHandle2, 0, 0, hv_Height, hv_Width);
}
//实时检测
public void ThreadFuntion()
{
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
while (flag==0)
{
try
{
ho_Image.Dispose();
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle1); //视频显示
if (grabImg == true)
{
grabImg = false;
HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle2); //抓拍图显示
}
}
catch
{
continue;
}
}
}
private void button1_Click_1(object sender, EventArgs e)
{
fc = new FlushClient(ThreadFuntion);
try
{
InitCamera(); //初始化相机
}
catch
{
MessageBox.Show("打开相机失败", "请重试");
}
//开始委托的线程
fc.BeginInvoke(null, null);
}
private void button2_Click_1(object sender, EventArgs e)
{
grabImg = true;
}
}
控件截图:
我的疑问:
接下来要做的就是把获取到的图片储存起来。
转载于:https://www.cnblogs.com/rockstarmaday/p/6673247.html
初学视觉学习笔记----用摄像头获取图片相关推荐
- 视觉学习笔记6——YOLOv5(v6.2)部署与代码理解
文章目录 前言 一.YOLOv5是什么? 二.环境搭建 1.基本环境 2.特殊环境 三.自定义训练 模型训练 模型测试 四.源码个人理解 1.detect.py文件 2.yolo.py文件 3. tr ...
- Kinect+OpenNI学习笔记之6(获取人体骨架并在Qt中显示)
前言 MS的kinec SDK和OpenNI都提供了人体骨骼跟踪的算法,人体骨骼跟踪算法在kinect人体行为识别中非常重要,该识别过程通常被用来作为行为识别的第一步, 比如说,通过定位人体中的骨骼支 ...
- 初学深度学习笔记(一)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 新手初学深度学习笔记(一) 前言 前言 跨专业初学者,整理一些自己所学到的知识,有问题请各位大佬指出
- h5调用手机摄像头获取图片用于人脸识别
h5调用手机摄像头获取图片用于人脸识别 1.安卓手机获取前置摄像头,并在video标签显示 注:navigator.mediaDevices.getUserMedia文档说明兼容Safari11,实测 ...
- opencv设置摄像头获取图片大小
opencv设置摄像头获取图片大小方法如下: cap = cv2.VideoCapture(0) #打开默认摄像头采集图像width = 640 #定义摄像头获取图像宽度 height = 480 # ...
- 【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用
树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...
- csi python 摄像头 树莓派_【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用...
树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...
- python打开摄像头获取图片_Python基于opencv调用摄像头获取个人图片的实现方法
接触图像领域的应该对于opencv都不会感到陌生,这个应该算是功能十分强劲的一个算法库了,当然了,使用起来也是很方便的,之前使用Windows7的时候出现多该库难以安装成功的情况,现在这个问题就不存在 ...
- 2017-2-15从0开始前端学习笔记(HTML)-图片-表格-表单
2017-2-15从0开始前端学习笔记-图片-表格-表单 标签 图片 图片<img src="#" alt="文本说明 不能加载图片时显示" title= ...
最新文章
- CodeForces 362B 	Petya and Staircases
- VS2010应用程序工程中文件的组成结构
- 501.二叉搜索树中的众数
- python3.6.5安装pip_无法在Python3.6中pip安装pickle
- 大话西游之Office应用实例系列! 19
- 在.NET 3.5中使用Parallel.For()(转帖)
- 【IoT】 产品设计与工艺:塑料表面处理工艺
- linux系统版本下载
- html实现百度换肤,百度换肤
- 聚类-KMeans算法(图解算法原理)
- Spring Boot系列——日志配置
- 怎样使用word的朗读文本功能
- fatal: Needed a single revision, invalid upstream “xxxx“ 问题解决
- 一篇博客解决网线挑选问题
- 干货| 生鲜电商的冷库内部该怎么设计(含案例)
- 痛彻心扉:学了半年 Python,还是找不到工作!
- 直播软件源码如何在Android端实现多人视频通话
- Google PR值原理和详细解说
- 国内十款手机ROOT软件运用评测
- 逆天了!程序员独自开发了一款 PS 杀手,免费免安装
热门文章
- java(1)——用notepad++编译java(javac.exe)
- 使用OpenSSL进行RSA加密和解密(非对称)
- HTML <cite> 标签
- Leetcode题库 32.从上到下打印二叉树(层次遍历 C实现)
- linux 网络通讯 命令,Linux—网络通讯管理命令
- 非二进制字符串数据:CHAR,VARCHAR,TEXT
- 这Hadoop分布式文件系统
- ADO.NET DataSet 数据模型
- iOS中UITextField的字数限制
- Web公路,新手上路!NO.2 [ 基础标签(一)]