impossible de convertir de 'cv::VideoCapture' à 'CvCapture*'

J'ai un programme simple, qui prend en vidéo et en joue (même si il fait un peu de traitement d'image sur la vidéo). La vidéo peut être récupéré à partir d'une Boîte de Dialogue de résultat ou directement en donnant le chemin d'accès du fichier. Lorsque j'utilise cv::CvCapture capture1, je reçois les propriétés comme capture1.isOpen(), capture1.get(CV_CAP_PROP_FRAME_COUNT) etc. mais quand j'utilise CvCapture* capture2 j'obtiens des erreurs étranges.

Je veux utiliser cv::CvCapture capture1 en raison de mes fonctions sont en conformité avec capture1. Ou est-il possible d'utiliser les deux types avec une sorte de conversion entre eux comme type coulée de ou quelque chose d'autre.

En fait, j'avais deux programmes, les fonctions de la program1 était pour cv::CvCapture et les fonctions de la program2 était pour CvCapture*. Je veux dire les deux programmes lire le fichier vidéo dans différentes manières.

J'ai ensuite fusionné ces deux programmes pour utiliser certaines fonctions de program1 et certaines fonctions de program2. Mais je ne peux pas convertir cv::CvCapture à CvCapture*.

Je suis en utilisant OpenCv avec Qt Creator.

Mon code est très long à poster ici, mais j'ai simplifié mon code pour le rendre plus petit et compréhensible. Mon code ne se compile pas correctement car je l'ai modifié pour le rendre plus simple.

Toute aide serait appréciée. Merci d'avance 🙂

void MainWindow::on_pushButton_clicked()
{

 std::string fileName = QFileDialog::getOpenFileName(this,tr("Open Video"), ".",tr("Video Files (*.mp4 *.avi)")).toStdString();

cv::VideoCapture  capture1(fileName);       //when I use the cv::VideoCapture capture it gives  an error

//error: cannot convert 'cv::VideoCapture' to 'CvCapture*' for argument '1' to 'IplImage* cvQueryFrame(CvCapture*)
    //CvCapture* capture2 = cvCaptureFromCAM(-1);
    //but when i use the CvCapture* capture2, it does not recognize capture2.isOpend() and capture2.get(CV_CAP_PROP_FRAME_COUNT) etc. don't work.
    //Is there any way to convert VideoCapture to CvCapture*?
    if (!capture.isOpened())
        {
            QMessageBox msgBox;
            msgBox.exec(); //some messagebox message. not important actually
        }
 cvNamedWindow( name );
 IplImage* Ximage = cvQueryFrame(capture);
 if (!Ximage)
   {
     QMessageBox msgBox;
     msgBox.exec();
    }

 double rate= capture.get(CV_CAP_PROP_FPS);
 int frames=(int)capture.get(CV_CAP_PROP_FRAME_COUNT);
int frameno=(int)capture.get(CV_CAP_PROP_POS_FRAMES);
 bool stop(false);

 capture.read(imgsize);

 cv::Mat out(imgsize.rows,imgsize.cols,CV_8SC1);
 cv::Mat out2(imgsize.rows,imgsize.cols,CV_8SC1);
        //I print the frame numbers and the total frames on  a label.
            ui->label_3->setText(QString::number(frameno/1000)+" /"+QString::number(frames/1000)); 
            ui->label->setScaledContents(true); 
            ui->label->setPixmap(QPixmap::fromImage(img1)); //here I show the frames on a label.
  }

OriginalL'auteur Ruhi Akaboy | 2012-06-06