Ich habe ein Skript in Python geschrieben, das die cv2.minEnclosingCircle Methode aufruft, ich versuche, ein ähnliches Programm in C++ zu erstellen, aber ich bin nicht in der Lage Radius und Mittelpunkt als Referenz übergeben.ungültige Initialisierung des nicht-const Referenz des Typs 'cv :: Point2f &'
Ich habe versucht, alternative Antworten bezüglich ungültige Initialisierung zu verwenden und die OpenCV-Dokumentation in Bezug auf die Funktion zu folgen, aber es ist nicht klar, Ich bin Lage ohne das ‚&‘ Radius und Mittelpunkt passieren jedoch würde ich bevorzuge nicht. Hier
ist die Dokumentation in Bezug auf die Methode http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#minenclosingcircle
Hier ist mein Code:
if (contours.size() > 0)
{
auto c = *std::max_element(contours.begin(),contours.end(),
[](std::vector<cv::Point> const& lhs, std::vector<cv::Point> const& rhs)
{return contourArea(lhs, false) < contourArea(rhs, false); });
cv::minEnclosingCircle(c, ¢er, &radius); // not compiling
}
ich erklärt haben, Radius und Mittelpunkt als Schwimmer und cv :: Point2f Typen sind.
Error: invalid initialization of non-const reference of type 'cv::Point2f& {aka cv::Point_<float>& }' from an rvalue of type 'cv::Point2f* {aka cv::Point_<float>*}
Hier ist, wie ich es in Python zu tun:
if len(contours) > 0;
#find largest contour in mask, use to compute minEnCircle
c = max(contours, key = cv2.contourArea)
(x,y), radius) = cv2.minEnclosingCircle(c) #not compiling in c++
M = cv2.moments(c)
Entschuldigung für den Tippfehler Miki! –
Warum passierst du mit '&'? Rufen Sie einfach 'cv :: minEnclosingCircle (c, center, radius);' auf. 'center' und' radius' werden als Referenz übergeben, Sie brauchen nicht die '&' – Miki
Mögliche Duplikate von [C++: Argument Passing "als Referenz übergeben"] (http://stackoverflow.com/questions/19827119/c -argument-passing-pass-by-reference) – Miki