2

このopencvエラーで何が起こっているのか誰にもわかりますか?

cv2.error: /home/desktop/OpenCV/opencv/modules/core/src/matrix.cpp:2294:
 error: (-215) d == 2 && (sizes[0] == 1 || sizes[1] == 1 || 
sizes[0]*sizes[1] == 0) in function create

それを発生させる行コードは次のとおりです。

rvecs, tvecs, inliers = cv2.solvePnPRansac(objp, corners2, cameraMatrix, dist)

このチュートリアルを順を追って説明しました: http://docs.opencv.org/master/dc/dbb/tutorial_py_calibration.html

それcameraMatrixは間違っているようですが、なぜですか?

cameraMatrixこのように見え、そうであるように見えます(ここを参照):

[[ 535.99484574,    0.        ,  334.33388272],
[   0.        ,  535.99541504,  239.81116973],
[   0.        ,    0.        ,    1.        ]]

チュートリアルから : cameraMatrix – 入力カメラ マトリックス

cameraMatrix – 入力カメラ行列 =

4

3 に答える 3

2

カメラマトリックスは大丈夫だと思います。

このエラーは、objpまたはcornersが原因である可能性があります。

objpは、オブジェクト座標空間のオブジェクト ポイントの配列、3xN/Nx3 1 チャネルまたは 1xN/Nx1 3 チャネルである必要があります。ここで、N はポイントの数です。cv::Point3f の std::vector もここで渡すことができます。

cornersは、対応するイメージ ポイントの配列、2xN/Nx2 1 チャネルまたは 1xN/Nx1 2 チャネルである必要があります。ここで、N はポイントの数です。cv::Point2f の std::vector もここで渡すことができます。

于 2015-05-16T11:02:01.163 に答える
1

次の変更にも注意してください。

rvecs, tvecs, inliers  = cv2.solvePnPRansac(objp, corners2, mtx, dist)

次のいずれかに:

_, rvecs, tvecs, inliers = cv2.solvePnPRansac(objp, corners2, mtx, dist)

また

rvecs, tvecs, inliers  = cv2.solvePnPRansac(objp, corners2, mtx, dist)[:-3]

Python を使用している場合。

ここのスレッドを参照してください: 'Too many values to unpack' with solvePnPRansac() - Pose Estimation

于 2016-09-13T13:44:01.883 に答える