C++ OpenCV捕获视频Ubuntu 12.0.4
我需要一些人帮我解决一个奇怪的问题 我在Ubuntu 120.4中使用了一个简单的应用程序,我使用Eclipse和OpenCV库C++。所以问题是我使用的是一种IPcameras,一切都很完美,下面是我使用的代码:C++ OpenCV捕获视频Ubuntu 12.0.4,c++,opencv,ubuntu,C++,Opencv,Ubuntu,我需要一些人帮我解决一个奇怪的问题 我在Ubuntu 120.4中使用了一个简单的应用程序,我使用Eclipse和OpenCV库C++。所以问题是我使用的是一种IPcameras,一切都很完美,下面是我使用的代码: int main(int argc, char *argv[]) { cv::VideoCapture cap("http//:192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=adm
int main(int argc, char *argv[])
{
cv::VideoCapture cap("http//:192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=admin&pwd=admin&.mjpg");
cv::Mat frame;
cv::namedWindow("video");
cvMoveWindow("video", 0, 0);
while ( cap.isOpened() )
{
cap >> frame;
if(frame.empty()) break;
cv::imshow("video", frame);
if(cv::waitKey(30) >= 0) break;
}
return 0;
}
那很好用。我的问题是,现在我必须与其他IPcameras一起工作,我不知道为什么它不工作,我使用的是相同的代码(更改Ip),应用程序的想法完全不同。问题是我可以通过浏览器看到相机,所以相机可以工作,然后我认为这应该是捕获结构的代码问题,但我尝试了许多组合,什么都没有,我检查了IPcamera文档,什么都没有。尝试以下代码来捕获
if(cap.isOpened())
{
while ( cap.grab() )
{
cap.retrieve(frame);
cv::imshow("video", frame);
if(cv::waitKey(30) >= 0) break;
}
}
您的IP地址格式不正确(请使用
http://
而不是http://:
)
:
必须立即遵循协议名称(http)我找到了解决方案,最后问题是我使用的IP摄像头使用的是“rtsp”协议,而我尝试使用的是http
我不得不使用“rtsp”
谢谢大家的帮助。可能是相机正忙,或者是在其他应用程序中打开的。我不知道IP摄像头,但对于网络摄像头,openCV需要对设备进行独占锁定。现在我看到浏览器上的摄像头正在更改分辨率,所以我点击:resolution=32而不是resolution=320x240,它正在浏览器上工作,所以问题看起来像是分辨率问题我猜摄像头不忙,但是我仍然无法从我的应用程序中看到相机,看起来由于某种原因应用程序无法捕获视频。嗨,Marcassin,很抱歉这是一个复制和粘贴错误,我有一个正确的格式http://sorry,很抱歉,因为你的问题没有解决:-)嗨,谢谢你的回答,我尝试了你的代码,但都是一样的,我认为问题在于捕获,因为如果我写coutcv::VideoCapture;const std::string videoStreamAddress=“”;如果(!cap.open(videoStreamAddress)){std::cout,即使它没有显示任何内容,也没有关于“错误打开视频…”的内容,因此它甚至无法打开视频。我不知道我还能做什么
int main(int argc, char *argv[])
{
cv::VideoCapture cap("http://192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=admin&pwd=admin&.mjpg");
cv::Mat frame;
cv::namedWindow("video");
...
}