Używam Python 2.7 i opencv 3.0.0. Próbuję wykonać oszacowanie pozy na wideo na żywo. Użyłem więc pliku calibrate.py przez opencv. działa dobrze. W tym programie dodałem na końcach linie, aby traktować informacje w celu ułożenia osi. Użyłem tego: http://docs.opencv.org/master/d7/d53/tutorial_py_pose.html#gsc.tab=0Błąd przy użyciu funkcji solvePnPRansac
W wierszu z funkcją solvePnPRansac napisałem to zamiast: _, rvecs, tvecs, inliers = cv2.solvePnPRansac(obj_points[0], corners2, camera_matrix, dist_coefs)
dodając _,
na początku wiersza.
Mam ten błąd pojawiający się!
error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\core\src\matrix.cpp:2294: error: (-215) d == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0) in function cv::_OutputArray::create
Nie rozumiem tego w ogóle!
Czy ktoś może mi pomóc?
Oto mój kod traktować wideo:
cap = cv2.VideoCapture(0)
while(1):
# Take each frame
ret, frame = cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
# Find the chess board corners
ret, corners = cv2.findChessboardCorners(gray, (6,5),None)
if ret:
term = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_COUNT, 30, 0.1)
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),term)
_, rvecs, tvecs, inliers = cv2.solvePnPRansac(obj_points[0], corners2, camera_matrix, dist_coefs)
imgpts, jac = cv2.projectPoints(axis, rvecs, tvecs, camera_matrix, dist_coefs)
frame = draw(frame,corners2,imgpts)
cv2.imshow('img',frame)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
sam tu znaleźliście rozwiązanie? –