0

S'il vous plaît jeter un oeil sur le code suivant OpenCVterme ne pas prendre une fonction 1 arguments

Mat *curent; 
    current = new Mat(); 
    cv::Rect bRect = cv::boundingRect(Mat(*points).reshape(2)); 

    Mat roi = *current(bRect); 

Ici, je suis en train d'obtenir un retour sur investissement sur le tapis appelé roi. Mais chaque fois que j'essaie d'exécuter la dernière ligne du code ci-dessus, j'obtiens l'erreur term does not evaluate to a function taking 1 arguments. J'ai suivi la même technique d'obtenir un ROI sans pointeurs nombre de fois avant en C++ et ils ont travaillé. Je suppose que le problème est avec le pointeur current? current doit être un pointeur car la variable locale a ralenti l'application d'une manière incroyable. Alors, comment puis-je résoudre ce problème et obtenir le retour sur investissement?

Répondre

3

s'il vous plaît, jetez ces pointeurs!

vous allez faire des ravages sur les refcounts Mat internes, produire un comportement non défini et memleaks

« variable locale a ralenti l'application d'une manière incroyable. »

vraiment, vous pensez, copier une structure de 58 octets est la raison? Je ne te crois pas.

Eh bien, je vais vous donner un indice, de toute façon - l'opérateur() a une priorité plus élevée que l'opérateur *.

+0

Il s'agit d'une application en temps réel. C'est pourquoi re créer des variables rendent les choses plus difficiles. Je l'ai testé. De toute façon, je n'ai pas compris ton indice. Pouvez-vous s'il vous plaît décrire/fournir un exemple s'il vous plaît? –

+0

Mat roi = (* courant) (bRect); – berak

+0

oh ouais, ça a marché. Je vous remercie! –

Questions connexes