Initial commit
This commit is contained in:
66
Divers/tutoriel39/realsense.py
Normal file
66
Divers/tutoriel39/realsense.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import pyrealsense2 as rs
|
||||
import numpy as np
|
||||
import cv2
|
||||
|
||||
lo=np.array([95, 100, 50])
|
||||
hi=np.array([105, 255, 255])
|
||||
color_infos=(0, 255, 255)
|
||||
|
||||
pipeline=rs.pipeline()
|
||||
config=rs.config()
|
||||
|
||||
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 15)
|
||||
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 15)
|
||||
|
||||
align_to = rs.stream.color
|
||||
align = rs.align(align_to)
|
||||
|
||||
pipeline.start(config)
|
||||
|
||||
while True:
|
||||
|
||||
frames=pipeline.wait_for_frames()
|
||||
|
||||
aligned_frames = align.process(frames)
|
||||
|
||||
depth_frame=aligned_frames.get_depth_frame()
|
||||
color_frame=aligned_frames.get_color_frame()
|
||||
|
||||
if not depth_frame or not color_frame:
|
||||
continue
|
||||
|
||||
depth_image=np.array(depth_frame.get_data())
|
||||
color_image=np.array(color_frame.get_data())
|
||||
|
||||
depth_colormap=cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
|
||||
|
||||
cv2.imshow('RealSense1', depth_colormap)
|
||||
|
||||
frame=color_image
|
||||
image=cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
|
||||
mask=cv2.inRange(image, lo, hi)
|
||||
image=cv2.blur(image, (7, 7))
|
||||
mask=cv2.erode(mask, None, iterations=4)
|
||||
mask=cv2.dilate(mask, None, iterations=4)
|
||||
image2=cv2.bitwise_and(frame, frame, mask=mask)
|
||||
elements=cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
|
||||
if len(elements) > 0:
|
||||
c=max(elements, key=cv2.contourArea)
|
||||
((x, y), rayon)=cv2.minEnclosingCircle(c)
|
||||
if rayon>30:
|
||||
cv2.circle(image2, (int(x), int(y)), int(rayon), color_infos, 2)
|
||||
cv2.circle(frame, (int(x), int(y)), 5, color_infos, 10)
|
||||
cv2.line(frame, (int(x), int(y)), (int(x)+150, int(y)), color_infos, 2)
|
||||
print(">>>", depth_colormap[int(y), int(x)])
|
||||
dist=depth_frame.get_distance(int(x), int(y))
|
||||
if dist<1:
|
||||
msg="{:2.0f} cm".format(dist*100)
|
||||
else:
|
||||
msg="{:4.2f} m".format(dist)
|
||||
cv2.putText(frame, msg, (int(x)+10, int(y) -10), cv2.FONT_HERSHEY_DUPLEX, 1, color_infos, 1, cv2.LINE_AA)
|
||||
cv2.imshow('Camera', frame)
|
||||
|
||||
key=cv2.waitKey(1)&0xFF
|
||||
if key==ord('q'):
|
||||
pipeline.stop()
|
||||
quit()
|
||||
Reference in New Issue
Block a user