diff --git a/src/add_qr.py b/src/add_qr.py index a39f25c6ca7141afbab0eb328696c2f6890b4cce..f115d494696da8ee1cd3a2b6704446ce6465d67b 100755 --- a/src/add_qr.py +++ b/src/add_qr.py @@ -17,6 +17,9 @@ from cv_bridge import CvBridge, CvBridgeError import numpy as np import tf +remembered_points = None +have_points = False + parser = OptionParser() parser.add_option ("", "--image-topic", action="store", type="string", dest="image_topic", help="Topic to take image from", default="/dji21/camera0/image_raw_orig") parser.add_option ("", "--image-frame", action="store", type="string", dest="image_frame", help="Topic to take image from", default="/dji0/camera0/image_frame") @@ -65,7 +68,7 @@ def stamp_to_json(data): return jobj def image_callback(data): - global fifo + global fifo, remembered_points, have_points try: # print("image_callback_main") if options.compressed: @@ -111,11 +114,13 @@ def image_callback(data): frame_pil = PilImage.fromarray(scaledimg) - timestamp = time.time() qr = qrcode.QRCode(box_size=2) - # qr.add_data(str(timestamp)) - qr.add_data(json.dumps(jobj)) - qr.make() + if options.qr_time: + timestamp = time.time() + qr.add_data(str(timestamp)) + else: + qr.add_data(json.dumps(jobj)) + qr.make() img_qr = qr.make_image() pos = (frame_pil.size[0] - img_qr.size[0] - 1, 1) #better result when 1 pixel in, thus -1 and +1 @@ -146,11 +151,21 @@ def image_callback(data): else: msg = bridge.cv2_to_imgmsg(final_image) image_pub.publish(msg) - + if options.decode: - decoded_data, _ , _ = detector.detectAndDecode(final_image) - print("DECODED DATA:", decoded_data) - + retval, points = detector.detect(final_image) + # print(retval, points) + if retval: + remembered_points = points + have_points = True + else: + print("FAILED TO FIND CODE, trying to use saved points") + if have_points: + decoded_data, _ = detector.decode(final_image, remembered_points) + if decoded_data: + print("DECODED DATA:", decoded_data) + else: + print("DECODING FAILED!!!!!!!!!") #retval, points = detector.detect(final_image) #print("DETECT:", retval, points) @@ -167,6 +182,8 @@ if __name__ == "__main__": rospy.init_node ("add_qr") + print(cv2.__version__) + listener = tf.TransformListener() detector = cv2.QRCodeDetector()