Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV:isOpened()总是失败_C++_Opencv - Fatal编程技术网

C++ OpenCV:isOpened()总是失败

C++ OpenCV:isOpened()总是失败,c++,opencv,C++,Opencv,我正在使用OpenCV迈出第一步,我正在尝试运行这段代码。它应该在新窗口中打开指定的视频,并等待用户按ESC键。我尝试将相对路径和绝对路径传递给VideoCapture,但VideoCapture::IsOpen()总是失败。为什么会这样 如果我将0传递给VideoCapture,而不调用isOpened(),则会得到一个漂亮的小窗口 请注意,我使用的是VS15和OpenCV 2.4(带有x86 libs) 编辑:我通过重新安装OpenCV并创建一个新的VisualStudio项目解决了这个问题

我正在使用OpenCV迈出第一步,我正在尝试运行这段代码。它应该在新窗口中打开指定的视频,并等待用户按ESC键。我尝试将相对路径和绝对路径传递给VideoCapture,但VideoCapture::IsOpen()总是失败。为什么会这样

如果我将0传递给VideoCapture,而不调用isOpened(),则会得到一个漂亮的小窗口

请注意,我使用的是VS15和OpenCV 2.4(带有x86 libs)

编辑:我通过重新安装OpenCV并创建一个新的VisualStudio项目解决了这个问题。上述代码奇迹般地开始工作

如果我将0传递给VideoCapture,而不调用isOpened(),则会得到一个 漂亮的小窗户。为什么会这样

因为
VideoCapture
类有两个不同的构造函数。获取
字符串的字符串试图从文件中读取。接受整数的一个尝试从设备读取。将0传递给第二个版本将指定默认设备/相机

视频捕获::打开¨打开视频文件或视频捕获设备 捕获

C++:bool VideoCapture::open(常量字符串和文件名)
C++:bool VideoCapture::open(int设备)

参数:
filename–打开的视频文件的名称(例如video.avi) 或图像序列(例如img_u%02d.jpg,它将读取以下样本 img_00.jpg、img_01.jpg、img_02.jpg……)

设备–打开的视频捕获设备的id(即摄像机索引)


也许你走错了路。你逃走了吗?您使用了正确的分机吗?默认情况下,Windows资源管理器隐藏已知扩展名,但在代码中必须使用该扩展名。@drescherjm是的,我想我已经使用了。我使用了这个“C:\\Users\\me\\myproject\\data\\sample.avi”。你能上传sample.avi或告诉我们使用哪种编解码器吗?您的程序是否可以访问opencv_ffmpeg*.dll文件?请确保它位于应用程序可以找到它的位置(例如,位于opencv_core*.dll所在的同一位置)。无法复制。投票结束这个问题。我同意这个问题应该结束。我怀疑我的OpenCV安装和/或为运行代码而设置的Visual Studio项目有问题。我将删除所有内容并重新安装它们。谢谢你的帮助。编辑:@MFisherKDX你下面的评论很有帮助,我试着提高投票率,但因为我的评分很低,所以我无法提高投票率。不过,我非常感谢您的意见。注释“为什么会发生这种情况?”是针对视频文件的问题,例如,为什么我不能加载视频文件?:-p我也尝试了open(),但也失败了。
#include "opencv2/opencv.hpp"

using namespace cv;

int main(int, char**)
{
   VideoCapture cap(path_to_video); // open the video file
   // VideoCapture cap(0);

   if(!cap.isOpened())  // check if we succeeded
       return -1;

   namedWindow("Video",1);

   for(;;)
   {
       Mat frame;
       cap >> frame; // get a new frame from camera        
       imshow("Video", frame);
       if(waitKey(30) >= 0) break;
   }

   return 0;
}