C++ 警告:找不到编解码器参数(../../modules/highgui/src/cap\u ffmpeg\u impl.hpp:540)
我试图显示来自IP摄像头的视频源,出现以下错误C++ 警告:找不到编解码器参数(../../modules/highgui/src/cap\u ffmpeg\u impl.hpp:540),c++,opencv,video,ip-camera,C++,Opencv,Video,Ip Camera,我试图显示来自IP摄像头的视频源,出现以下错误 warning: Could not find codec parameters (../../modules/highgui/src/cap_ffmpeg_impl.hpp:540) 这是同样的代码 #include <stdio.h> #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespac
warning: Could not find codec parameters
(../../modules/highgui/src/cap_ffmpeg_impl.hpp:540)
这是同样的代码
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int, char**)
{
VideoCapture vcap;
Mat image;
// This works on a D-Link CDS-932L
const string videoStreamAddress = "http://admin:admin123@172.41.20.55:80/? action=stream?dummy=param.mjpg";//From mjpeg streamer
//const string videoStreamAddress = "http://192.168.1.13:8080/videofeed? dummy=param.mjpg"; // Streaming from android using ip-cam
//open the video stream and make sure it's opened
if(!vcap.open(videoStreamAddress)) {
cout << "Error opening video stream or file" << std::endl;
return -1;
}
for(;;) {
if(!vcap.read(image)) {
cout << "No frame" << std::endl;
waitKey();
}
cv::imshow("Output Window", image);
if(cv::waitKey(1) >= 0) break;
}
}
#包括
#包括
#包括
使用名称空间cv;
使用名称空间std;
int main(int,char**)
{
视频捕获vcap;
Mat图像;
//这适用于D-Link CD-932L
常量字符串videoStreamAddress=”http://admin:admin123@172.41.20.55:80/?操作=流?虚拟=参数mjpg”;//来自mjpeg拖缆
//常量字符串videoStreamAddress=”http://192.168.1.13:8080/videofeed? dummy=param.mjpg;//使用ip cam从android进行流式传输
//打开视频流并确保其已打开
如果(!vcap.open(videoStreamAddress)){
cout警告不是错误!放松
在这种情况下,FFmpeg是在抱怨,而不是OpenCV。我能够用以下代码解决问题
#include <stdio.h>
#include <opencv2/opencv.hpp>
int main(){
CvCapture *camera=cvCaptureFromFile("http://username:password@ipOfCamera/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg");
if (camera==NULL)
printf("camera is null\n");
else
printf("camera is not null");
cvNamedWindow("img");
while (cvWaitKey(10)!=atoi("q")){
double t1=(double)cvGetTickCount();
IplImage *img=cvQueryFrame(camera);
/*if(img){
cvSaveImage("C:/opencv.jpg",img);
}*/
double t2=(double)cvGetTickCount();
printf("time: %gms fps: %.2g\n",(t2-t1)/(cvGetTickFrequency()*1000.), 1000./((t2-t1)/(cvGetTickFrequency()*1000.)));
cvShowImage("img",img);
}
cvReleaseCapture(&camera);
}
#包括
#包括
int main(){
CvCapture*camera=cvCaptureFromFile(“http://username:password@ipOfCamera/axis cgi/mjpg/video.cgi?分辨率=640x480,要求fps=30和.mjpg“;
如果(摄像机==NULL)
printf(“照相机为空\n”);
其他的
printf(“摄像机不为空”);
CVD公司(“img”);
while(cvWaitKey(10)!=atoi(“q”)){
double t1=(double)cvGetTickCount();
IplImage*img=cvQueryFrame(摄像机);
/*如果(img){
cvSaveImage(“C:/opencv.jpg”,img);
}*/
double t2=(double)cvGetTickCount();
printf(“时间:%gms fps:%.2g\n”,(t2-t1)/(cvGetTickFrequency()*1000.),1000./(t2-t1)/(cvGetTickFrequency()*1000.);
cvShowImage(“img”,img);
}
cvReleaseCapture(相机和相机);
}
如果它能帮助像我这样的人就好了。
还感谢@karlphillip为您提供的时间。您安装了什么OpenCV版本?@karlphillip:我刚刚成功安装了OpenCV 2.4.6,但我收到了相同的警告。正如我所说:警告不一定是问题。这个问题甚至可能无法修复。您的程序是否正确显示捕获的帧?我是able使用USB网络摄像头捕获帧。不使用IP摄像头单击答案旁边的复选框,将其选为官方视频。