Robust QR Detector based on YOLOv7
Project description
QRDet
QRDet is a robust QR Detector based on YOLOv7.
QRDet will detect QR codes even in difficult positions or tricky images. If you are looking for a complete QR Detection + Decoding pipeline, take a look at QReader.
Installation
To install QRDet, simply run:
pip install qrdet
Usage
There is only one function you'll need to call to use QRDet, detect
:
from qrdet import QRDetector
import cv2
detector = QRDetector()
image = cv2.imread(filename='resources/qreader_test_image.jpeg')
detections = detector.detect(image=image, is_bgr=True)
# Draw the detections
for (x1, y1, x2, y2), confidence in detections:
cv2.rectangle(image, (x1, y1), (x2, y2), color=(0, 255, 0), thickness=2)
cv2.putText(image, f'{confidence:.2f}', (x1, y1 - 10), fontFace=cv2.FONT_HERSHEY_SIMPLEX,
fontScale=1, color=(0, 255, 0), thickness=2)
# Save the results
cv2.imwrite(filename='resources/qreader_test_image_detections.jpeg', img=image)
API Reference
QReader.detect(image, return_confidences = True, as_float = False, is_bgr = False)
-
image
: np.ndarray. NumPy Array containing theimage
to decode. The image is expected to be inuint8
format [HxWxC], RGB or BGR depending on theis_bgr
parameter. -
return_confidences
: bool. IfTrue
, the output will be in the format(((x1, y1, x2, y2), confidence), ...)
. Otherwise, it will be in the format((x1, y1, x2, y2), ...)
. Default:True
. -
return_confidences
: bool. IfTrue
, the returned coordinates will be returned asfloat
, with the complete precision outputted from the detection model. Otherwise, they will be rounded to the closest integer. Default:False
. -
is_bgr
: bool. IfTrue
the image is expected to be inBGR
. Otherwise, it will be expected to beRGB
. Default:False
-
Returns: tuple[tuple[tuple[int, int, int, int], float], ...] | tuple[tuple[int, int, int, int]]: A tuple with the coordinates of all detected QR codes. If
return_confidences
isTrue
, the output will look like:(((x1, y1, x2, y2), confidence), ...)
. Ifreturn_confidences
isFalse
it will look like:((x1, y1, x2, y2), ...)
.
Acknowledgements
This library is based on the following projects:
- YoloV7 model for Object Detection.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.