opencv打开外置USB摄像头出现问题,请问是怎么回事

出现的错误见图片,程序中断后就停在那了![图片说明](https://img-ask.csdn.net/upload/201707/21/1500622369_348965.png)图片说明
图片说明

完整程序如下:

 #include <cstdio>
#include <cv.h>  
#include <highgui.h>   
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
    IplImage *frame = NULL;
    IplImage *pDstImg = NULL;
    CvCapture *capture1 = cvCaptureFromCAM(1);
    cvSetCaptureProperty(capture1 , CV_CAP_PROP_FRAME_WIDTH , 320);  //寻找膛口质心时获取像素较少的图片
    cvSetCaptureProperty(capture1 , CV_CAP_PROP_FRAME_HEIGHT , 240);
    char fileName[100];
    char key;
    int count = 0;
    waitKey(3000);
    while(1)
    {
       frame = cvQueryFrame(capture1);
       pDstImg = cvCreateImage( cvSize(frame->width, frame->height), IPL_DEPTH_8U, 3);

       /*****添加的程序段:将图像画面旋转180度--仿射变换****/
        double angle = 180;
        CvPoint2D32f center = cvPoint2D32f(frame->width/2.f,frame->height/2.f);
        float m[6];
        CvMat map_matrix = cvMat( 2, 3, CV_32F,m);
        cv2DRotationMatrix(center,angle,1.0,&map_matrix);
        cvWarpAffine (frame, pDstImg, &map_matrix);
        cvCopy(pDstImg, frame);

                /****到此为止****/
        cvFlip(frame, NULL, 1);               //水平翻转图像,像照镜子一样,不想要这个效果可以去掉此句
        key = cvWaitKey(50);
        if(key == 27) break;                //按ESC键退出程序
        if(key == 'p')                      //按p键拍照
        {
            sprintf(fileName, "Picture %d.jpg", ++count); //生成文件名
            cvSaveImage(fileName, frame);
            cvXorS(frame, cvScalarAll(255), frame);        //将拍到的图像反色(闪一下形成拍照效果)
            cvShowImage("相机",frame);
            cvWaitKey(10); //反色图像显示ms
        }
        cvShowImage("相机",frame);
//        cvShowImage("相机",pDstImg);
    }
    cvReleaseCapture(&capture1);
    return 0;
}

,这个程序之前还能用的,今天运行就出现这个问题了,

frame = cvQueryFrame(capture1);之后判断一下frame是否为NULL

http://bbs.csdn.net/topics/391903878,可以看看这个,问题应该是一样的

1先用if(frame==NULL)先判断是否图片获取为空,如果为空,你在看一下相机接入电脑有没有接入成功,如果是linux系统,去/dev/下面看,如果是windows就去设备管理器那边看就知道了