27 lines
1000 B
Plaintext
27 lines
1000 B
Plaintext
class QrDetect():
|
|
def __init__(self):
|
|
self.qr_data = ''
|
|
|
|
def getQrData(self):
|
|
return self.qr_data
|
|
|
|
def qr_detection(self,data):
|
|
'''сканирование qr кода'''
|
|
if self.qr_data!= '':
|
|
return
|
|
cv_image = bridge.imgmsg_to_cv2(data, 'bgr8')
|
|
barcodes = pyzbar.decode(cv_image)
|
|
|
|
if barcodes:
|
|
self.qr_data = barcodes[0].data.decode('utf-8')
|
|
|
|
|
|
#в MAIN для вызова функции необходимо следующее:
|
|
#1. создаём и вызываем подписчика, который вызывает функцию чтения кьюаркода
|
|
qd = QrDetect()
|
|
qr_sub = rospy.Subscriber('main_camera/image_raw',Image, qd.qr_detection,queue_size=1)
|
|
#2. задаём время работы подписчика (за 1 секунду примерно 20 раз вызывается функция)
|
|
rospy.sleep(2)
|
|
#3. выключаем подписчика
|
|
qr_sub.unregister()
|