我正在使用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/

10-12 16:59