J'utilise les liaisons pyopencv. Cette librairie python utilise boost :: python pour se connecter à OopenCV. Maintenant, j'essaie d'utiliser la classe SURF mais je ne sais pas comment gérer l'opérateur de classe dans mon code python.Comment utiliser les opérateurs C++ dans python en utilisant boost :: python (pyopencv)
La classe C++ est définie comme:
void SURF::operator()(const Mat& img, const Mat& mask,
vector<KeyPoint>& keypoints) const
{...}
Comment puis-je passer mes arguments à cette classe?
Mise à jour: Merci à interjay je peux appeler la méthode, mais maintenant je reçois des erreurs de type. Quel serait le python boost :: python :: tuple?
import pyopencv as cv
img = cv.imread('myImage.jpg')
surf = cv.SURF();
key = []
mask = cv.Mat()
print surf(img, mask, key, False)
me APPORTE:
Traceback (most recent call last):
File "client.py", line 18, in <module>
print surf(img, mask, key, False)
Boost.Python.ArgumentError: Python argument types in
SURF.__call__(SURF, Mat, Mat, list, bool)
did not match C++ signature:
__call__(cv::SURF inst, cv::Mat img, cv::Mat mask,
boost::python::tuple keypoints,
bool useProvidedKeypoints=False)
__call__(cv::SURF inst, cv::Mat img, cv::Mat mask)
Merci interjay, cela fonctionne. Mais maintenant je reçois une erreur de type. J'ai mis à jour ma question. Avez-vous des conseils à ce sujet? – dan
@dan voir ma modification – interjay