test_qrcode_detect.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/env python
  2. '''
  3. ===============================================================================
  4. QR code detect and decode pipeline.
  5. ===============================================================================
  6. '''
  7. import os
  8. import numpy as np
  9. import cv2 as cv
  10. from tests_common import NewOpenCVTests
  11. class qrcode_detector_test(NewOpenCVTests):
  12. def test_detect(self):
  13. img = cv.imread(os.path.join(self.extraTestDataPath, 'cv/qrcode/link_ocv.jpg'))
  14. self.assertFalse(img is None)
  15. detector = cv.QRCodeDetector()
  16. retval, points = detector.detect(img)
  17. self.assertTrue(retval)
  18. self.assertEqual(points.shape, (1, 4, 2))
  19. def test_detect_and_decode(self):
  20. img = cv.imread(os.path.join(self.extraTestDataPath, 'cv/qrcode/link_ocv.jpg'))
  21. self.assertFalse(img is None)
  22. detector = cv.QRCodeDetector()
  23. retval, points, straight_qrcode = detector.detectAndDecode(img)
  24. self.assertEqual(retval, "https://opencv.org/")
  25. self.assertEqual(points.shape, (1, 4, 2))
  26. def test_detect_multi(self):
  27. img = cv.imread(os.path.join(self.extraTestDataPath, 'cv/qrcode/multiple/6_qrcodes.png'))
  28. self.assertFalse(img is None)
  29. detector = cv.QRCodeDetector()
  30. retval, points = detector.detectMulti(img)
  31. self.assertTrue(retval)
  32. self.assertEqual(points.shape, (6, 4, 2))
  33. def test_detect_and_decode_multi(self):
  34. img = cv.imread(os.path.join(self.extraTestDataPath, 'cv/qrcode/multiple/6_qrcodes.png'))
  35. self.assertFalse(img is None)
  36. detector = cv.QRCodeDetector()
  37. retval, decoded_data, points, straight_qrcode = detector.detectAndDecodeMulti(img)
  38. self.assertTrue(retval)
  39. self.assertEqual(len(decoded_data), 6)
  40. self.assertEqual(decoded_data[0], "TWO STEPS FORWARD")
  41. self.assertEqual(decoded_data[1], "EXTRA")
  42. self.assertEqual(decoded_data[2], "SKIP")
  43. self.assertEqual(decoded_data[3], "STEP FORWARD")
  44. self.assertEqual(decoded_data[4], "STEP BACK")
  45. self.assertEqual(decoded_data[5], "QUESTION")
  46. self.assertEqual(points.shape, (6, 4, 2))