调试opencv调用摄像头程序时碰到的问题

昨天晚上想把opencv学习笔记整理一下,当跑opencv调用摄像头的程序的时候老是出现Assertion failed (size.width>0 && size.height>0) in cv::imshow,最后查阅资料知道了是因为调用imshow()函数的时候传入的Mat为空导致的,可能是刚开始的时候摄像头并没有初始化成功,就调用imshow()导致程序已启动就down掉了,只要在while循环中判断一下传入的Mat是否为空就解决了

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{
    VideoCapture cap(0);
    //设置摄像头
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
    //确认是否成功打开摄像头
    if (!cap.isOpened()){
        cout << "打开摄像头失败,退出";
        exit(-1);
    }
    namedWindow("Capture", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    while (1)
    {
        Mat frame;
        cap >> frame;
        if (!frame.empty())
        {
            imshow("Capture", frame);

        }

        if (waitKey(30) >= 0) break;

}
    return 0;
}
时间: 2024-10-05 22:02:33

调试opencv调用摄像头程序时碰到的问题的相关文章

win7系统下使用openCV调用摄像头问题

鄙人今日尝试使用openCV调用摄像头做图片中圆的圆心位置检测时,意外发现程序能成功调用笔记的集成摄像头,但却无法调用外接的USB摄像头.(使用的为OpenCV1.0 + VC6.0) 使用程序如下: #include"cv.h"#include"highgui.h"#include"cvcam.h"#include"iostream"using namespace std; int main(int argc,char* a

Java调用其他程序时waitFor()阻塞

Java调用其他程序时waitFor()阻塞  http://www.cnblogs.com/yejg1212/archive/2013/06/02/3114242.html

利用face_recognition,dlib与OpenCV调用摄像头进行人脸识别

用已经搭建好 face_recognition,dlib 环境来进行人脸识别 未搭建好环境请参考:https://www.cnblogs.com/guihua-pingting/p/12201077.html 使用OpenCV 调用摄像头 import face_recognition import cv2 video_capture = cv2.VideoCapture(0) # VideoCapture打开摄像头,0为笔记本内置摄像头,1为外USB摄像头,或写入视频路径 mayun_img

OpenCv调用摄像头拍照代码

近期在研究OpenCv对摄像头的调用.现将代码贴出,供大家批评指正. 1.申明 #include"./opencv2/opencv.hpp" #ifdef _DEBUG #pragma comment(lib,"opencv_core249d.lib") #pragma comment(lib,"opencv_highgui249d.lib") #else #pragma comment(lib,"opencv_core249.lib&

Delphi XE Seattle update1 调试iOS 9.3程序时,不能用真机调试的问题

选择iOS device 64 bit设备时,刷新时看不到真机ipad,进入Mac OS X虚拟机,打开 ituns也找不到ipad,查找百度,发现是由于虚拟机设置里边USB要设置成2.0,3.0是不可以的,

C#调用Exe程序示例

在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Process类在System.Diagnostics包中. 示例一 using System.Diagnostics; Process p = Process.Start("notepad.exe"); p.WaitForExit();//关键,等待外部程序退出后才能往下执行 通过上述代码可以调用记事本程序,注意如果不是调用系统程序,则需要输入全路径. 示

树莓派:使用OpenCV调用自带的摄像头.

总所周知,树莓派上,调用摄像头的指令有raspistill和raspivid.若要使用opencv对摄像头进行调用,不少人会出现 cvCaptureFromCAM(0)函数无法找到Pi Cam的错误情况. 但是当树莓派外接USB摄像头时,该函数可以正常使用.但对于一体机器,想要把树莓派封装成一个小机器人.使用自带 摄像头,就需要花点功夫去自己编译生成可以用opencv调用自带摄像头的程序了.过程可能有些许复杂. step 1 : install csi webcam step 2 : insta

opencv检错:程序运行过程正常,当跳出函数时出现断言错误(Debug Assertion Failed)

转载http://blog.csdn.net/u012327581/article/details/51351780 1.问题描述 在VS2015下配置好Opencv后,程序在函数运行过程中正常,调试时发现,当运行至跳出函数时,出现断言错误. 2.原因分析 单步跟踪调试发现,在函数结束时会进行vector的析构,出现了析构错误.并且,如果vector在定义完成之后,进行resize或reserve操作,将vector空间做大,问题消失.后来查阅资料,结合亲身测试,发现是在调用Opencv 库时,

「新手必看」Python+Opencv实现摄像头调用RGB图像并转换成HSV模型

在ROS机器人的应用开发中,调用摄像头进行机器视觉处理是比较常见的方法,现在把利用opencv和python语言实现摄像头调用并转换成HSV模型的方法分享出来,希望能对学习ROS机器人的新手们一点帮助.至于为什么转换成HSV模型,因为在机器视觉方面用HSV模型进行图像处理是比较方便的,实现的方法和效果相对于其他模型都较为突出. 接下来是完整步骤: 1.打开一个终端,用vim编辑器新建并打开一个后缀为.py的文件 1 $ vim a.py 2.在打开的文件里按"a"进入编辑模式,然后输入