我正在使用AR无人机的底部摄像头检测QR码,以便让我知道棋盘上无人机的下落。无人机在棋盘上盘旋,每个单独的正方形都是固定位置的QR码(例如A1,C5,E7等)。当我按下某个键时,它将扫描QR码并返回给我该位置。
现在,我希望能够检测出很多QR码。由于无人机可能会看到多个QR码。因为我需要知道无人机在哪个确切的正方形上,或者至少是最接近的正方形(例如:A1上方的2/3和A2上方的1/3应该得出A1)。这是我当前正在使用的代码:
#!/usr/bin/python
from sys import argv
import zbar
import Image
import cv2
class DetectQRCode(object):
@classmethod
def detect_qr(self, image):
# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
# obtain image data
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY,dstCn=0)
pil = Image.fromarray(gray)
width, height = pil.size
raw = pil.tostring()
# wrap image data
image = zbar.Image(width, height, 'Y800', raw)
# scan the image for barcodes
scanner.scan(image)
# extract results
for symbol in image:
# do something useful with results
if symbol.data == "None":
return "Drone bevindt zich buiten het raster"
else:
return symbol.data
可以使用OpenCV,Python吗? zbar有我可以使用的东西吗?
最佳答案
我建议最好的方法是先检测QR码周围的所有边界(最大的正方形),这将为您提供图像中QR码的列表。
然后,您可以对列表中最靠近无人机位置的列表进行排序,然后在该特定QR码上运行QR码阅读器。
Here是有关如何使用opencv检测正方形的教程。
&here是一个堆栈溢出问题,显示了如何检测其中具有其他正方形的边界框。
关于python - 如何使用OpenCV,Python和zbar检测单个QR码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28210912/