#python #image #opencv #qr-code #opencv-python
Вопрос:
Я использую cv2.QRCodeDetector
для декодирования QR-кодов на изображениях. Я заметил, что размер изображения имеет значение для декодирования. Например, сохраните это изображение: https://i.ibb.co/QKF3wQ7/cropped.jpg (он должен быть размером 640×356)
Теперь, если вы сделаете следующее:
detector = cv2.QRCodeDetector()
img = cv2.imread('cropped.jpg')
# img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
decoded, points, _ = detector.detectAndDecode(img)
print('Decoded text is: ', decoded)
Выход:
Decoded text is:
Но если вы уменьшите размер изображения (раскомментировав третью строку),:
detector = cv2.QRCodeDetector()
img = cv2.imread('cropped.jpg')
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
decoded, points, _ = detector.detectAndDecode(img)
print('Decoded text is: ', decoded)
Выход:
Decoded text is: BMLF000117*0000000000007883*2021-05-27*11:15:43*43.92
Я хотел бы иметь возможность считывать QR-коды, не беспокоясь о размере изображения. Как я могу узнать, какой размер подходит? Я обнаружил, что это зависит от исходного размера изображения, независимо от того, повернуто ли изображение влево или вправо или без поворота. Но в целом я не могу знать, какой размер будет уместен для декодирования декодером.
Что я могу сделать, чтобы расшифровать QR-код?
Комментарии:
1. Не могу воспроизвести, и я перепробовал 5 разных версий OpenCV. Используя ваш образец изображения, он ничего не обнаруживает, независимо от масштаба.
2. Хорошо, похоже, что изображение было слишком сильно обрезано, чтобы можно было распознать вариант масштаба 0,2. Я могу заставить его работать с исходным масштабным изображением, если сначала выполню пороговое значение Otsu, а затем уничтожу результат с помощью перекрестного элемента 3×3.
3. Я не понимал такого подхода. Если бы вы могли уточнить или дать ответ, я был бы признателен. Странно, что вы не можете воспроизвести, когда загружаете изображение, какого оно размера?
4. Привет, Дэн, не могли бы вы подробнее объяснить? Мне это срочно нужно 🙂
5. Привет, Дэн, я был бы признателен, если бы у тебя было время помочь мне! 🙂