OpenCV d'Avoir des problèmes avec cv::RAPIDE

Je suis en train d'utiliser l'open CV RAPIDE algorithim afin de détecter les coins à partir d'un flux vidéo. L'appel de la méthode et de set-up semble assez simple pourtant, je suis en cours d'exécution dans un certain nombre de problèmes. Quand j'ai essayer d'utiliser ce code

  while(run)
{
    clock_t begin,end;
    img = cvQueryFrame(capture);

    key = cvWaitKey(10);


    cvShowImage("stream",img);
    //Cv::FAST variables
    int threshold=9;
    vector<KeyPoint> keypoints;

    if(key=='a'){
        //begin = clock();


        Mat mat(tempImg);

        FAST(mat,keypoints,threshold,true);
        //end = clock();
        //cout << "\n TIME FOR CALCULATION: " << double(diffClock(begin,end)) << "\n" ;

    }

J'obtiens cette erreur:

OpenCV Erreur: échec de l'Assertion (de l'image.données && image.type() == CV_8U) in unknown
fonction, fichier de ........\ocv\opencv\src\cvaux\cvfast.cpp ligne 6039

Alors j'ai pensé que c'est un problème avec la profondeur de l'image, j'ai donc quand j'ai ajouter ceci:

    IplImage* tempImg = cvCreateImage(Size(img->width,img->height),8,1);
        cvCvtColor(img,tempImg,CV_8U);

J'obtiens:

OpenCV Erreur: Mauvais nombre de canaux (nombre Incorrect de canaux pour cette conv
ersion code) en fonction inconnue, fichier ........\ocv\opencv\src\cv\cvcolor.cpp
ligne 2238

J'ai essayé d'utiliser un Tapis au lieu d'un IplImage à capturer, mais j'obtiens le même genre d'erreurs.

Des suggestions ou de l'aide?
Merci à l'avance.

Le fichier en entier juste pour rendre les choses plus facile pour tout le monde:

    #include "cv.h"
    #include "cvaux.hpp"
    #include "highgui.h"

    #include <time.h>
    #include <iostream>



    double diffClock(clock_t begin, clock_t end);

    using namespace std;
    using namespace cv;

    int main(int argc, char** argv)
    {
//Create Mat img for camera capture 
IplImage* img;
bool run = true;

CvCapture* capture= 0;
capture = cvCaptureFromCAM(-1);
int key =0;
cvNamedWindow("stream", 1);

while(run)
{
    clock_t begin,end;
    img = cvQueryFrame(capture);

    key = cvWaitKey(10);


    cvShowImage("stream",img);
    //Cv::FAST variables
    int threshold=9;
    vector<KeyPoint> keypoints;

    if(key=='a'){
        //begin = clock();
        IplImage* tempImg = cvCreateImage(Size(img->width,img->height),8,1);
        cvCvtColor(img,tempImg,CV_8U);

        Mat mat(img);

        FAST(mat,keypoints,threshold,true);
        //end = clock();
        //cout << "\n TIME FOR CALCULATION: " << double(diffClock(begin,end)) << "\n" ;

    }
    else if(key=='x'){
        run= false;
    }
}
cvDestroyWindow( "stream" );
return 0;

}

InformationsquelleAutor dipsmac | 2012-03-14