关闭

opencv判断摄像头是否断开

167人阅读 评论(0) 收藏 举报

使用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 )

{

//摄像头断开了

}


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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28899次
    • 积分:636
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:28篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论