Как изменить значение ASCII вывода QR-кода - PullRequest
0 голосов
/ 06 февраля 2020

Я строю робота, используя raspberry pi и открытое резюме, чтобы читать и отображать штрих-коды в режиме реального времени. В настоящее время у меня есть вывод, успешно декодирующий QR-коды, как и ожидалось.

Моя цель состоит в том, чтобы робот отображал значение "CCC", а приложение сканера QR-кода iphone отображало бы "AAA", создавая, таким образом, "секретное декодирование QR-кода". Я не уверен, как именно это сделать. Пожалуйста, смотрите ниже раздел кода, который я считаю актуальным.

Заранее спасибо.

while True:
        # grab the frame from the threaded video stream and resize it to
        # have a maximum width of 400 pixels
        frame = vs.read()
        frame = imutils.resize(frame, width=600) 

        # find the barcodes in the frame and decode each of the barcodes
        barcodes = pyzbar.decode(frame)

        # loop over the detected barcodes
        for barcode in barcodes:
                # extract the bounding box location of the barcode and draw
                # the bounding box surrounding the barcode on the image
                (x, y, w, h) = barcode.rect
                cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)

                # the barcode data is a bytes object so if we want to draw it
                # on our output image we need to convert it to a string first
                barcodeData = barcode.data.decode("ascii") 

                # draw the barcode data and barcode type on the image
                text = "{}".format(barcodeData)
                cv2.putText(frame, text, (x, y - 10),
                        cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)

1 Ответ

0 голосов
/ 06 февраля 2020

Нет способа закодировать две разные данные в один и тот же QR-код так, чтобы стандартный декодер (например, на вашем телефоне) мог декодировать его как «AAA» и другое приложение «BBB».

Конечно, вы можете зашифровать данные в своем QR-коде, но тогда это будет гиббери sh для готового декодера.

РЕДАКТИРОВАТЬ: Конечно, вы можете делать любые преобразования для данных, которые вы читаете, например, сдвиг кода ASCII, упомянутый в комментариях:

barcodeData = "".join(chr(ord(c) + 1) for c in barcodeData)

превратит «AAA» в «BBB».

...