Hello,
I am trying to use the SFM opencv contrib module with python3.
After dealing with a couple of problems, I can now access to all the SFM functions from python3, e.g. help(cv2.sfm) shows all the functions (see this and this for the details).
I can run the example code for the SFM trajectory reconstruction
Also, I can compile and run a cpp code with a similar code (see this issue)
All this to say that my sfm seems to be working fine.
The problem is when I try to acces it from python.
I get
bash
OpenCV Error: Assertion failed (k == STD_VECTOR_MAT) in getMatRef, file /home/mike/workingcopy/opencv/modules/core/src/matrix.cpp, line 2675
Traceback (most recent call last):
File "/home/mike/catkin_ws/src/v4v/opencv_tests/src/reconstruction_test.py", line 232, in <module>
cv2.sfm.reconstruct2(points2d=tracks, Rs=Rs_est, Ts=ts_est, K=K, is_projective=True, points3d=points3d_est)
cv2.error: /home/mike/workingcopy/opencv/modules/core/src/matrix.cpp:2675: error: (-215) k == STD_VECTOR_MAT in function getMatRef
This is in
cpp
Mat(R).copyTo(Rs.getMatRef(i));
in function
cpp
virtual void getCameras(OutputArray Rs, OutputArray Ts)
in file simple_pipeline.cpp
I think it has something to do with the way I am initializing the np.arrays from the python side for the Ts, Rs OutputArrays.
How should I initialize in python the variables that go in the reconstruct function (points2d, K, Rs, Ts and points3d)
python
reconstruct2(...)
reconstruct2(points2d, K[, Rs[, Ts[, points3d[, is_projective]]]]) -> Rs, Ts, K, points3d
Any help would be appreciated.
Regards,
Miguel