Output 3D points change everytime in triangulatePoints using in Python 2.7 with OpenCV 3.3 -


i want know 3d points stereo cameras using triangulatepoints in python 2.7 , opencv 3.3. that, calibrated stereo cameras , stored matrices in folder. rectified images using cv2.stereorectify , using cv2.initundistortrectifymap undistort images. saved images projection matrices p1 , p2 , find corresponding point in both images. point in left image ptl = np.array([304,277]) , corresponding point in right image ptr = np.array([255,277]). after tried points = cv2.triangulatepoints(p1,p2,ptl,ptr). code is:

    import cv2         import numpy np         import matplotlib.pyplot plt          cameramatrixl = np.load('mtx_left.npy')         distcoeffsl = np.load('dist_left.npy')         cameramatrixr = np.load('mtx_right.npy')         distcoeffsr = np.load('dist_right.npy')         r = np.load('r.npy')         t = np.load('t.npy')     # following matrices saved got stereorectify         r1 = np.load('r1.npy')         r2 = np.load('r2.npy')         p1 = np.load('p1.npy')         p2 = np.load('p2.npy')         q = np.load('q.npy') # upload alreday distorted , rectified images         imgl = cv2.imread('d:\python/triangulate in 3 d\left.png',0)         imgr = cv2.imread('d:\python/triangulate in 3 d/right.png',0)         ptl = np.array([304,277]) # point in left image         ptr = np.array([255,277]) # corresponding point in right image         points = cv2.triangulatepoints(p1,p2,ptl,ptr)         print points 

but when ever run code results got changed (also results wrong). 1 time results like

[[  518845863]  [ 1667138857]  [-1189385102]  [    -661713]] 

another time results like

[[-1766436066]  [          0]  [          0]  [-1299735447]] 

sometimes looks

[[        0]  [        0]  [697559541]  [        0]] 

i don't know why results changing parameters same only? also, these 3d points incorrect. how correct these problems?

edit: i observed 1 thing in code, after running not completed. neither shows process finished exit code 0 nor process finished exit code 1. when pressed red stop button finished process finished exit code 1. why so? think due above error coming. why code not running process finished exit code 0?

finally, after many tries found out mistake doing. actually, defining points in code in wrong way. according triangulatepoints document, points should

projpoints1 – 2xn array of feature points in first image.

but in code wrote

ptl = np.array([304,277]) # point in left image ptr = np.array([255,277]) # corresponding point in right image 

means defining 1x2 array while should define 2x1 array single point. likewise 5 points array should 2x5. n points offcourse 2xn. initially, didn't notice because used traingulation in matlab , there corresponding points used nx2 array.now put points

l = np.array([[ 304],[ 277]],dtype=np.float) r = np.array([[ 255 ],[ 277]],dtype=np.float) 

and got above code working.

one more point dtype=np.float important in defining point array avoid wrong results.

results got not accurate , shows error of 20-25 mm solved above problem answer question , have find out way minimise errors. if knows how reduce error please tell me.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -