opencv判断摄像头是否断开

原创 2017年08月28日 16:11:25

使用opencv的cv::VideoCapture 类对象从摄像头处获取图像时,没法通过获取的图像判断摄像头是否有断开,即开始时成功获取到图像后,中间摄像头断开了,返回的图像数据还是正常的。


使用摄像头获取图像:

static cv::VideoCapture g_imgCapture;
g_imgCapture.open(0);

cv::Mat img, irImg;

g_imgCapture >> img;


正常情况下获取到的img是有数据的,摄像头断开时获取到的img也依然有数据。

判断摄像头是否断开方法:

通过获取摄像头图片的色调,如果摄像头连接正常,则返回来的色调是0,如果摄像头断开连接了,则色调返回来先是13,然后变成-1。因此直接判断返回值是不是0就可以知道摄像头是否断开:

double lightCapHue = g_imgCapture.get(CAP_PROP_HUE);

if(lightCapHue  != 0 )

{

//摄像头断开了

}


有一个使用需要注意的地方,不知是不是该函数需要经过比较耗时的运算,如果循环需要显示抓拍到的图片,并且如果每一帧都获取色调的话,会造成画面很卡。因此可以不用每一帧都判断摄像头是否断开,可以隔个好几秒再判断一次都可以。

我的OpenCV学习笔记(11):启动摄像头

在网上看了许多关于OpenCV启动摄像头的资料,但是,都是基于C语言的,代码又臭又长,(其实主要是因为我学的OpenCV就是用C++的,C语言的基本数据结构不太熟悉),所以一直想找一个用C++写的程序...

关闭摄像头 结束线程

前面提到用线程打开了摄像头程序。现在我们该如何去关闭它。该程序是在线程内的一个死循环,如果循环过程中来监听某一变量的变化,做条件来结束循环。即该线程也结束。 bool CcamShowDlg::Cam...

opencv 摄像头和视频操作的两种方法

视频操作 #include #include #include #include #include #include #include #include #include #inc...
  • hgz_gs
  • hgz_gs
  • 2016年02月24日 19:58
  • 1305

Opencv调取摄像头失败的处理方法

最近想学习一下opencv,就弄了一本《学习opencv》的书看,书中的例子也随便敲一敲。可是,在调去摄像头时出现了如下问题。具体代码如下: #include "stdafx.h" #inclu...
  • IDMer
  • IDMer
  • 2015年08月03日 09:22
  • 5815

Opencv打开内置摄像头

Opencv中VideoCapture是专门用来处理视频文件或者摄像头视频流的类,详细的说明和用法可以参考Opencv2.4.13的说明文档:点击打开链接 使用VideoCapture打开内置摄...
  • dcrmg
  • dcrmg
  • 2016年08月13日 20:31
  • 5518

[OpenCV] -- 简单摄像头操作

Email : hahayacoder@gmail.com 1 简单玩了下OpenCV中开启和关闭电脑摄像头,其实挺简单的,接下来在Qt中实现 2 打开Qt Creator,新建一个Qt Gui工程 ...

opencv里关于开启摄像头的一点心得

最进用opencv做东西时经常用到摄像头,发现了开启摄像头有好几个函数可以实现,我感觉可能是因为opencv1.0与2.0的函数不一样导致的(晕死,搞这么多函数还不是实现一个功能),接下来总结我用到的...

图像识别(8)——使用OpenCV预览USB摄像头+曝光设置

博主QQ:1356438802 QQ群:473383394——UVC&OpenCV473383394 平台:Win7 64bits + Visual Studio 2012 + OpenCV...

opencv 打开摄像头却捕捉不到图像解决方法

写opencv程序,打开摄像头,不料书上的程序出错,能打开摄像头,但是捕捉不到图像 用兄弟的电脑试过,能运行,没有问题 在网上找了很久,试了很多的方法,都没有用,后来在一个百度知道上找到一个方法成...

OpenCV基础:读取摄像头

这两天需要做一个疲劳检测,目前正在做眼睛部分,额~~,先丢个读取摄像头的代码,记录我已经开始; #include using namespace cv; const int DESIRED_CAM...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:opencv判断摄像头是否断开
举报原因:
原因补充:

(最多只允许输入30个字)