Bonjour,
Je débute en C++(MC 2010 Express) et open Cv (2.4.8)
J'ai un premier code qui me permet de créer un buffer d'image (représenté par un tableau de Mat ) tiré d'une vidéo.
Mais j'essaie de créer une fonction "Buffer" qui serait donc extérieur à mon main (pour m'entraîner) :
Voilà si j'essaie avec vector j'obtiens :
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 # include "cv.h" # include "highgui.h" #include <stdio.h> #include <stdlib.h> #include <vector> using namespace cv; Mat Buffer(String URL){ VideoCapture capture; capture.open(URL); Mat frames[50];//std::vector<Mat> frames; for (int compteur = 0 ; compteur < 50 ; compteur++) { capture>>frames[compteur]; } return frames; } int main() { Mat frames[50]; //ou std::vector<Mat> frames; frames=Buffer("C:\\Documents and Settings\\SY_R\\red_car_video.avi") imshow("image:",frames[10]); imshow("image2:",frames[20]); cvWaitKey (0); return 0; }
1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(11): error C2955: 'cv::Vector'*: l'utilisation d'une classe modèle requiert une liste d'arguments modèle
1> c:\opencv8\build\include\opencv2\core\operations.hpp(2271)*: voir la déclaration de 'cv::Vector'
1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(11): error C2079: 'Buffer' utilise une class de 'cv::Vector' non défini
Et si j'essaie avec Mat j'obtiens :
1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(24): error C2664: 'cv::Mat::Mat(const cv::Mat &)'*: impossible de convertir le paramètre 1 de 'cv::Mat [50]' en 'const cv::Mat &'
1> Raison*: impossible de convertir de 'cv::Mat [50]' en 'const cv::Mat'
1> Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
Alors tout d'abord pourriez vous me conseiller : plutôt Mat ou plutôt Vector ? logiquement si je suis en C++ autant utilisé la classe vector mais d'après ce que j'ai pu voir sur internet pour régler les problèmes de "modèle" ça m'a l'air beaucoup plus compliqué ... Pour autant j'imagine que si j'utilise mat je vais devoir régler mes problèmes en utilisant des pointeurs ? (ce que j'aimerais éviter à tout prix..)
Cordialement,
Ronan
Partager