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