我正在使用树莓派构建一个机器人,并打开CV来实时读取和显示条形码。我目前输出按预期成功解码二维码。
我的目标是让机器人显示值"CCC",而 iphone QR 码扫描仪应用程序将显示"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)
没有办法将两个不同的数据编码到同一个二维码中,就像现成的解码器(例如手机上的解码器(可以将其解码为"AAA"和另一个应用程序"BBB"一样。
您当然可以加密二维码中的数据,但对于现成的解码器来说,这将是胡言乱语。
编辑:当然,您可以对读取的数据进行任何转换,例如注释中提到的ASCII代码移位:
barcodeData = "".join(chr(ord(c) + 1) for c in barcodeData)
将"AAA"变成"BBB"。