我正在使用here中的代码:
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
imshow("edges", frame);
if(waitKey(200) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
几乎一切都按预期工作。
出现一个窗口,我的摄像头指示灯变为绿色,然后没有视频。
我已经简化了我的代码,因为我实际上不希望在示例中进行转换。只是想看一个视频Feed。
我搜索了一堆,读了几个问题,似乎什么都没有用。我尝试调整等待时间,跳过第一帧,使用cap.read
,包括highgui
,使highgui
感到特别排除,并亵渎。到目前为止,没有任何效果。
我使用了来自source的opencv,并且正在运行opencv2.4.13.6
。使用CMake和make。
我的CMake是:
set( OpenCV_DIR /Users/jason.nichols/opencv-2.4.13.6/build )
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage motion.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
有什么想法吗?
答案 0 :(得分:0)
出于某种原因,关闭我的终端并重新打开它使这项工作成功。
我猜测它是我在opencv设置期间添加到.bash_profile
中的环境变量,但不是100%肯定。
这个问题的真正含义是没有运行时错误,没有cmake错误,也没有编译器错误。
我知道这不是一个令人满意的答案,但如果你达到这个状态,请尝试将其关闭并重新打开。
再一次,具体来说,代码编译,运行,打开网络摄像头灯,但不显示任何视频或抛出任何异常。在这种状态下,重启终端解决了我的问题。如果有人知道原因,请打开更好的答案。这几乎肯定不适用于任何其他问题。