fin de session
This commit is contained in:
parent
ddbb9ba1ed
commit
2c3aee2937
|
|
@ -0,0 +1,142 @@
|
|||
import numpy as np
|
||||
import cv2
|
||||
|
||||
|
||||
# Check for left and right camera IDs
|
||||
# These values can change depending on the system
|
||||
CamL_id = 1# Camera ID for left camera
|
||||
CamR_id = 5# Camera ID for right camera
|
||||
|
||||
CamL= cv2.VideoCapture(CamL_id)
|
||||
CamR= cv2.VideoCapture(CamR_id)
|
||||
|
||||
|
||||
|
||||
|
||||
retL, imgL= CamL.read()
|
||||
retR, imgR= CamR.read()
|
||||
|
||||
imgR_gray = cv2.cvtColor(imgR,cv2.COLOR_BGR2GRAY)
|
||||
imgL_gray = cv2.cvtColor(imgL,cv2.COLOR_BGR2GRAY)
|
||||
print("la c bon")
|
||||
# Reading the mapping values for stereo image rectification
|
||||
cv_file = cv2.FileStorage("data/params_py.xml", cv2.FILE_STORAGE_READ)
|
||||
Left_Stereo_Map_x = cv_file.getNode("Left_Stereo_Map_x").mat()
|
||||
Left_Stereo_Map_y = cv_file.getNode("Left_Stereo_Map_y").mat()
|
||||
Right_Stereo_Map_x = cv_file.getNode("Right_Stereo_Map_x").mat()
|
||||
Right_Stereo_Map_y = cv_file.getNode("Right_Stereo_Map_y").mat()
|
||||
cv_file.release()
|
||||
|
||||
def nothing(x):
|
||||
pass
|
||||
|
||||
cv2.namedWindow('disp',cv2.WINDOW_NORMAL)
|
||||
cv2.resizeWindow('disp',600,600)
|
||||
|
||||
cv2.createTrackbar('numDisparities','disp',1,17,nothing)
|
||||
cv2.createTrackbar('blockSize','disp',5,50,nothing)
|
||||
cv2.createTrackbar('preFilterType','disp',1,1,nothing)
|
||||
cv2.createTrackbar('preFilterSize','disp',2,25,nothing)
|
||||
cv2.createTrackbar('preFilterCap','disp',5,62,nothing)
|
||||
cv2.createTrackbar('textureThreshold','disp',10,100,nothing)
|
||||
cv2.createTrackbar('uniquenessRatio','disp',15,100,nothing)
|
||||
cv2.createTrackbar('speckleRange','disp',0,100,nothing)
|
||||
cv2.createTrackbar('speckleWindowSize','disp',3,25,nothing)
|
||||
cv2.createTrackbar('disp12MaxDiff','disp',5,25,nothing)
|
||||
cv2.createTrackbar('minDisparity','disp',5,25,nothing)
|
||||
|
||||
# Creating an object of StereoBM algorithm
|
||||
stereo = cv2.StereoBM_create()
|
||||
while True:
|
||||
|
||||
# Capturing and storing left and right camera images
|
||||
retL, imgL= CamL.read()
|
||||
retR, imgR= CamR.read()
|
||||
|
||||
# Proceed only if the frames have been captured
|
||||
if retL and retR:
|
||||
imgR_gray = cv2.cvtColor(imgR,cv2.COLOR_BGR2GRAY)
|
||||
imgL_gray = cv2.cvtColor(imgL,cv2.COLOR_BGR2GRAY)
|
||||
|
||||
# Applying stereo image rectification on the left image
|
||||
Left_nice= cv2.remap(imgL_gray,
|
||||
Left_Stereo_Map_x,
|
||||
Left_Stereo_Map_y,
|
||||
cv2.INTER_LANCZOS4,
|
||||
cv2.BORDER_CONSTANT,
|
||||
0)
|
||||
|
||||
# Applying stereo image rectification on the right image
|
||||
Right_nice= cv2.remap(imgR_gray,
|
||||
Right_Stereo_Map_x,
|
||||
Right_Stereo_Map_y,
|
||||
cv2.INTER_LANCZOS4,
|
||||
cv2.BORDER_CONSTANT,
|
||||
0)
|
||||
|
||||
# Updating the parameters based on the trackbar positions
|
||||
numDisparities = cv2.getTrackbarPos('numDisparities','disp')*16
|
||||
blockSize = cv2.getTrackbarPos('blockSize','disp')*2 + 5
|
||||
preFilterType = cv2.getTrackbarPos('preFilterType','disp')
|
||||
preFilterSize = cv2.getTrackbarPos('preFilterSize','disp')*2 + 5
|
||||
preFilterCap = cv2.getTrackbarPos('preFilterCap','disp')
|
||||
textureThreshold = cv2.getTrackbarPos('textureThreshold','disp')
|
||||
uniquenessRatio = cv2.getTrackbarPos('uniquenessRatio','disp')
|
||||
speckleRange = cv2.getTrackbarPos('speckleRange','disp')
|
||||
speckleWindowSize = cv2.getTrackbarPos('speckleWindowSize','disp')*2
|
||||
disp12MaxDiff = cv2.getTrackbarPos('disp12MaxDiff','disp')
|
||||
minDisparity = cv2.getTrackbarPos('minDisparity','disp')
|
||||
|
||||
# Setting the updated parameters before computing disparity map
|
||||
stereo.setNumDisparities(numDisparities)
|
||||
stereo.setBlockSize(blockSize)
|
||||
stereo.setPreFilterType(preFilterType)
|
||||
stereo.setPreFilterSize(preFilterSize)
|
||||
stereo.setPreFilterCap(preFilterCap)
|
||||
stereo.setTextureThreshold(textureThreshold)
|
||||
stereo.setUniquenessRatio(uniquenessRatio)
|
||||
stereo.setSpeckleRange(speckleRange)
|
||||
stereo.setSpeckleWindowSize(speckleWindowSize)
|
||||
stereo.setDisp12MaxDiff(disp12MaxDiff)
|
||||
stereo.setMinDisparity(minDisparity)
|
||||
|
||||
# Calculating disparity using the StereoBM algorithm
|
||||
disparity = stereo.compute(Left_nice,Right_nice)
|
||||
# NOTE: compute returns a 16bit signed single channel image,
|
||||
# CV_16S containing a disparity map scaled by 16. Hence it
|
||||
# is essential to convert it to CV_32F and scale it down 16 times.
|
||||
|
||||
# Converting to float32
|
||||
disparity = disparity.astype(np.float32)
|
||||
|
||||
# Scaling down the disparity values and normalizing them
|
||||
disparity = (disparity/16.0 - minDisparity)/numDisparities
|
||||
|
||||
# Displaying the disparity map
|
||||
cv2.imshow("disp",disparity)
|
||||
|
||||
# Close window using esc key
|
||||
if cv2.waitKey(1) == 27:
|
||||
break
|
||||
|
||||
else:
|
||||
CamL= cv2.VideoCapture(CamL_id)
|
||||
CamR= cv2.VideoCapture(CamR_id)
|
||||
|
||||
print("Saving depth estimation paraeters ......")
|
||||
|
||||
cv_file = cv2.FileStorage("../data/depth_estmation_params_py.xml", cv2.FILE_STORAGE_WRITE)
|
||||
cv_file.write("numDisparities",numDisparities)
|
||||
cv_file.write("blockSize",blockSize)
|
||||
cv_file.write("preFilterType",preFilterType)
|
||||
cv_file.write("preFilterSize",preFilterSize)
|
||||
cv_file.write("preFilterCap",preFilterCap)
|
||||
cv_file.write("textureThreshold",textureThreshold)
|
||||
cv_file.write("uniquenessRatio",uniquenessRatio)
|
||||
cv_file.write("speckleRange",speckleRange)
|
||||
cv_file.write("speckleWindowSize",speckleWindowSize)
|
||||
cv_file.write("disp12MaxDiff",disp12MaxDiff)
|
||||
cv_file.write("minDisparity",minDisparity)
|
||||
cv_file.write("M",39.075)
|
||||
cv_file.release()
|
||||
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
import numpy as np
|
||||
import cv2
|
||||
|
||||
|
||||
CamL_id = "data/stereoL.mp4"
|
||||
CamR_id = "data/stereoR.mp4"
|
||||
|
||||
CamL= cv2.VideoCapture(CamL_id)
|
||||
CamR= cv2.VideoCapture(CamR_id)
|
||||
|
||||
print("Reading parameters ......")
|
||||
cv_file = cv2.FileStorage("data/params_py.xml", cv2.FILE_STORAGE_READ)
|
||||
|
||||
Left_Stereo_Map_x = cv_file.getNode("Left_Stereo_Map_x").mat()
|
||||
Left_Stereo_Map_y = cv_file.getNode("Left_Stereo_Map_y").mat()
|
||||
Right_Stereo_Map_x = cv_file.getNode("Right_Stereo_Map_x").mat()
|
||||
Right_Stereo_Map_y = cv_file.getNode("Right_Stereo_Map_y").mat()
|
||||
cv_file.release()
|
||||
|
||||
|
||||
while True:
|
||||
retR, imgR= CamR.read()
|
||||
retL, imgL= CamL.read()
|
||||
|
||||
if retL and retR:
|
||||
imgR_gray = cv2.cvtColor(imgR,cv2.COLOR_BGR2GRAY)
|
||||
imgL_gray = cv2.cvtColor(imgL,cv2.COLOR_BGR2GRAY)
|
||||
|
||||
Left_nice= cv2.remap(imgL,Left_Stereo_Map_x,Left_Stereo_Map_y, cv2.INTER_LANCZOS4, cv2.BORDER_CONSTANT, 0)
|
||||
Right_nice= cv2.remap(imgR,Right_Stereo_Map_x,Right_Stereo_Map_y, cv2.INTER_LANCZOS4, cv2.BORDER_CONSTANT, 0)
|
||||
|
||||
output = Right_nice.copy()
|
||||
output[:,:,0] = Right_nice[:,:,0]
|
||||
output[:,:,1] = Right_nice[:,:,1]
|
||||
output[:,:,2] = Left_nice[:,:,2]
|
||||
|
||||
# output = Left_nice+Right_nice
|
||||
output = cv2.resize(output,(700,700))
|
||||
cv2.namedWindow("3D movie",cv2.WINDOW_NORMAL)
|
||||
cv2.resizeWindow("3D movie",700,700)
|
||||
cv2.imshow("3D movie",output)
|
||||
|
||||
cv2.waitKey(1)
|
||||
|
||||
else:
|
||||
break
|
||||
Loading…
Reference in New Issue