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
Si vous pouvez m'aider? Merci beacoup
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Partager