Lire deux vidéos dans un seul code
Bonjour,
S'il vous plait, je veux lire deux vidéos et comparer leurs frames pixel par pixel, mais j'obtiens un segfaults. Voici le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
#include <stdio.h>
#include <stdlib.h>
#include <cv.h>
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <vector>
using namespace std;
using namespace cv;
int main()
{
char *video1="uncompressed.avi";
char *video2="uncompressed1.avi";
VideoCapture capture1(video1);
VideoCapture capture2(video2);
if(!capture1.open(video1))
{
cout<<"error reading video :"<<video1<<endl;
return -1;
}
if(!capture2.open(video2))
{
cout<<"error reading video :"<<video2<<endl;
return -1;
}
double fps = capture1.get(CV_CAP_PROP_FPS);
int w = capture1.get(CV_CAP_PROP_FRAME_WIDTH);
int h = capture1.get(CV_CAP_PROP_FRAME_HEIGHT);
int nbFrame = capture1.get(CV_CAP_PROP_FRAME_COUNT);
int coun1=0,coun2=0;
CvSize size = cvSize(w,h);
vector<Mat> v1,v2;
while(coun1<nbFrames)
{
Mat frame;
capture1>>frame;
v1.push_back(frame);
coun1++;
}
while(coun2<nbFrames)
{
Mat frame;
capture2>>frame;
v2.push_back(frame);
coun2++;
}
for(int k=0;k<1;k++)
for(int i=0;i<v1[k].cols;i++)
for(int j=0;j<v1[k].rows;j++)
if((int)v1[k].at<uchar>(i,j)!=(int)v2[k].at<uchar>(i,j))
cout<<"no"<<endl;
return(0);
} |
Si vous pouvez m'aider? Merci beacoup