मैं कुछ कोडित मार्करों के चित्र निर्देशांक और वस्तु निर्देशांक से कैमरा अंशांकन मापदंडों की गणना करना चाहता हूं।

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(points, centers, gray.shape[::-1], None, None)

लेकिन मुझे निम्न त्रुटि मिलती है:

objectPoints should contain vector of vectors of points of type Point3f in function 'cv::collectCalibrationData'

यह मुझे भ्रमित करता है क्योंकि वस्तु बिंदु इस तरह कार्यान्वित किए जाते हैं:

points=np.float32([[7.8, 4.9, 0], [5.2, 4.9, 0], [7.8, 7.35, 0], [5.2, 7.35, 0], [2.6, 7.35, 0],[10.4, 0, 0],...])

और वे कंसोल प्रिंट और np.shape . से आयामों के अनुसार mx3-matrix प्रतीत होते हैं

[[ 7.8   4.9   0.  ]
 [ 5.2   4.9   0.  ]
 [ 7.8   7.35  0.  ]
 [ 5.2   7.35  0.  ]
 [ 2.6   7.35  0.  ]
 [10.4   0.    0.  ]
...]

(20, 3)

मेरी छवि बिंदुओं की गणना कुछ अरुको-मार्करों से की जाती है और इस तरह दिखते हैं:

[[2639.   1826.5 ]
 [2265.5  1820.5 ]
 [2638.75 1480.  ]
 [2269.   1475.25]
 [1898.   1470.5 ]
 [3024.   2551.25]
...]
(20, 2)

मुझे पता है कि समतलीय वस्तु बिंदु वास्तव में इस कार्य के लिए उपयुक्त नहीं हैं। मैंने अभी सबकुछ के सिंटैक्स को समझने के लिए कुछ डमी डेटा बनाना शुरू कर दिया है :) अग्रिम धन्यवाद

0
SurveyingSurveyor 13 मार्च 2021, 16:29

1 उत्तर

सबसे बढ़िया उत्तर

वैसे इसका उत्तर काफी सरल है:

objpoints=[]
objpoints.append(points)

फिर cv2.कैलिब्रेटकैमरा को पॉइंट्स के बजाय objpoints के साथ कॉल करें

खैर, मेरी समझदारी चली गई :)

0
SurveyingSurveyor 19 मार्च 2021, 18:02