Tôi đang gặp sự cố khi định dạng x, y danh sách các điểm để chuyển sang undistortPoints (opencv 2.4.1).Làm thế nào để định dạng xy điểm cho undistortPoints với python cv2 api?
Thông báo lỗi là C++ cụ thể và than phiền về mảng các điểm không thuộc loại CV_32FC2. Không nên tôi có thể vượt qua trong một mảng nx2 numpy?
import cv2
camera_matrix = array(mat('1.3e+03, 0., 6.0e+02; 0., 1.3e+03, 4.8e+02; 0., 0., 1.'), dtype=float32)
dist_coeffs = array(mat('-2.4-01, 9.5e-02, -4.0e-04, 8.9e-05, 0.'), dtype=float32)
test = zeros((10,2), dtype=float32)
print test.shape, type(test)
xy_undistorted = cv2.undistortPoints(test, camera_matrix, dist_coeffs)
kết quả trong:
opencv/modules/imgproc/src/undistort.cpp:279: error: (-215) CV_IS_MAT(_src) && CV_IS_MAT(_dst) && (_src->rows == 1 || _src->cols == 1) && (_dst->rows == 1 || _dst->cols == 1) && _src->cols + _src->rows - 1 == _dst->rows + _dst->cols - 1 && (CV_MAT_TYPE(_src->type) == CV_32FC2 || CV_MAT_TYPE(_src->type) == CV_64FC2) && (CV_MAT_TYPE(_dst->type) == CV_32FC2 || CV_MAT_TYPE(_dst->type) == CV_64FC2) in function cvUndistortPoints
Trong mẫu/python2/video.py có sử dụng projectPoints mà phải mất một mảng và reshapes nó (-1,3) dẫn đến một mảng NX3 cho rằng chức năng, có vẻ như cùng định dạng sẽ hoạt động ở đây.
Kết quả đầu ra của tôi (với dữ liệu thực thay vì số không) trông hợp lý với định dạng lại (-1,1,2) - cảm ơn thông tin chi tiết về thứ nguyên mảng thứ ba được coi là kênh. Tôi không chắc chắn nếu đó là rõ ràng hoặc tài liệu bất cứ nơi nào, và có vẻ như không phù hợp với ví dụ projectPoints. –