VideoCapture无法使用C ++窗口

时间:2015-05-26 22:50:55

标签: c++ opencv visual-studio-2012

所以我之前在OpenCV中玩过一堆,并且从未遇到过这个问题。我正在实现一个MeanShift算法并试图在视频设备,图像和视频上进行。设备和图像工作;但是,无论我尝试什么,当我在我的文件名上运行VideoCapture时(无论是在构造函数中设置它还是使用VideoCapture :: open()方法,无论是本地还是完整路径)我总是卡在我的错误检查中

思考?想法?代码如下。在Visual Studio 2012中运行

    #include "opencv2\highgui\highgui.hpp"
#include "opencv2\core\core.hpp"
#include "opencv2\opencv.hpp"
#include "opencv2\video\video.hpp"
#include <string>

using cv::Mat;
using std::string;

enum Filetype{Image, Video};

int main(int argc, char* argv[])
{

    string filename = "short_front.avi";// "C:\\Users\\Jonathan\\Videos\\short_front.mp4"; //"hallways.jpg";


    Mat cv_image;       //convert to unsigned char * with data
    Mat filtImage_;
    Mat segmImage_;
    Mat whiteImage_;

    cv::VideoCapture vid;
    vid.open("C:/Users/Jonathan/Desktop/TestMeanShift/TestMeanShift/short_front.avi");
    cv::waitKey(1000);
    if ( !vid.isOpened() ){
        throw "Error when reading vid";
        cv::waitKey(0);
        return -1;
    }

//  cv_image = cv::imread(filename);//, CV_LOAD_IMAGE_COLOR);

//  if(! cv_image.data){
//      std::cerr << "Image Failure: " << std::endl;
//      system("pause");
//      return -1;
//  }
    //Mat cv_image_gray;
    //cv::cvtColor(cv_image,cv_image_gray,CV_RGB2GRAY);

    for (;;)
    {
        vid >> cv_image;
        if ( !cv_image.data)
            continue;


    cv::imshow("Input",cv_image); //add a normal window here to resizable
}

编辑:这是列出here列表中的一个明显问题,因为它处理的是特定的极端案例:VideoCaptureImageCapture都有效,但不是VideoCapture一份文件。当它不起作用时,代码正常运行,除了它创建的“视频”不完整,因为它没有正确打开。因此,由于上面的代码在编译时或运行时没有崩溃,唯一的指标是输出错误(6KB视频输出文件)。如果您遇到的问题不是我所描述的角落情况,而是OpenCV中上述功能的一般问题,上述链接可以帮助您。

0 个答案:

没有答案