Skip to content

Commit 782676b

Browse files
clean up
1 parent ef2c410 commit 782676b

File tree

1 file changed

+27
-31
lines changed

1 file changed

+27
-31
lines changed

scripts/capture.py

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,47 +11,43 @@
1111
from cv_bridge import CvBridge, CvBridgeError
1212
import numpy as np
1313

14-
def write_buffer(filename, buffer):
15-
t = time.time()
16-
np.save(filename, buffer)
17-
#print("Saved in {}".format(time.time()-t), filename)
18-
1914
def main(args):
15+
2016
rospy.init_node("camera", anonymous=True)
21-
image_pub = rospy.Publisher("image",Image, queue_size=10)
22-
23-
bridge = CvBridge()
24-
17+
18+
# Need to use the V4L2 backend on Linux to get the right format
2519
cap = cv2.VideoCapture(0 + cv2.CAP_V4L2)
26-
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc(*"Y16 "))
27-
cap.set(cv2.CAP_PROP_CONVERT_RGB, False)
20+
21+
# Set fourcc code to Y16 and disable RGB conversion
22+
capture_raw = rospy.get_param('~raw_video', default_value=False)
2823

29-
buffer_size = 100
30-
buffer = np.zeros((buffer_size,512,640), dtype='uint16')
24+
if capture_raw:
25+
rospy.info("Raw (Y16) capture enabled.")
26+
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc(*"Y16 "))
27+
cap.set(cv2.CAP_PROP_CONVERT_RGB, False)
28+
else:
29+
rospy.info("RGB24 capture enabled.")
3130

32-
i = 0
33-
j = 0
31+
queue_size = rospy.get_param('~queue_size', default_value=10)
32+
image_pub = rospy.Publisher("image",Image, queue_size=queue_size)
3433

35-
while not rospy.is_shutdown():
36-
t = time.time()
37-
res, image = cap.read()
38-
if res:
39-
image_pub.publish(bridge.cv2_to_imgmsg(image, encoding="passthrough"))
40-
#cv2.imwrite("/boson_ws/captures/image_{}.tiff".format(i), image)
34+
bridge = CvBridge()
35+
frame_count = 0
36+
prev_capture = time.time()
4137

42-
buffer[i] = image
43-
i += 1
38+
while not rospy.is_shutdown():
4439

45-
if i == buffer_size:
46-
#print("Writing")
47-
#filename = "/boson_ws/captures/buffer_{}".format(j)
48-
#np.save(filename, buffer)
49-
#buffer, buffer_double = buffer_double, buffer
50-
i = 0
51-
j += 1
40+
capture_success, image = cap.read()
5241

53-
#print "FPS", 1.0/(time.time()-t)
42+
if capture_success:
43+
image_pub.publish(bridge.cv2_to_imgmsg(image, encoding="passthrough"))
44+
frame_count += 1
45+
rospy.logdebug("Frame %d", frame_count)
46+
else:
47+
rospy.logwarn(5, "Image capture failed")
5448

49+
rospy.logdebug("FPS: %f", 1.0/(time.time()-prev_capture))
50+
prev_capture = time.time()
5551

5652
cap.release()
5753

0 commit comments

Comments
 (0)