diff --git a/tests/data/qrcode-yolov3-tiny.cfg b/tests/data/qrcode-yolov3-tiny.cfg new file mode 100644 index 0000000..b38e156 --- /dev/null +++ b/tests/data/qrcode-yolov3-tiny.cfg @@ -0,0 +1,182 @@ +[net] +# Testing +batch=24 +subdivisions=8 +# Training +# batch=64 +# subdivisions=2 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 4000 +policy=steps +steps=3200,3600 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + + +[yolo] +mask = 3,4,5 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=1 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=1 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/tests/data/qrcode-yolov3-tiny_last.weights b/tests/data/qrcode-yolov3-tiny_last.weights new file mode 100644 index 0000000..d743311 Binary files /dev/null and b/tests/data/qrcode-yolov3-tiny_last.weights differ diff --git a/tests/extract_otp_secrets_test.py b/tests/extract_otp_secrets_test.py index 993c033..7301ffa 100644 --- a/tests/extract_otp_secrets_test.py +++ b/tests/extract_otp_secrets_test.py @@ -43,211 +43,211 @@ qreader_available: bool = extract_otp_secrets.qreader_available # @pytest.mark.skipif(sys.platform.startswith("win") or not qreader_available or sys.implementation.name == 'pypy' or sys.version_info >= (3, 10), reason="Quickfix") -def test_cv2_segfault_1(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') +# def test_cv2_segfault_1(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') - print('cv2.imread') - img = cv2.imread('tests/data/test_googleauth_export.png') +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] - print(f'detect and decode for qr_mode {qr_mode_2}') +# print(f'detect and decode for qr_mode {qr_mode_2}') - print('Done') +# print('Done') -def test_cv2_segfault_2(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') +# def test_cv2_segfault_2(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') - print('cv2.imread') - img = cv2.imread('tests/data/test_googleauth_export.png') +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] - print(f'detect and decode for qr_mode {qr_mode_2}') - if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: +# print(f'detect and decode for qr_mode {qr_mode_2}') +# if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: - print('cv.QRCodeDetector()') - cv2.QRCodeDetector() +# print('cv.QRCodeDetector()') +# cv2.QRCodeDetector() - elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: - cv2.QRCodeDetector().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: - cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: - zbar.decode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: +# cv2.QRCodeDetector().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: +# cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: +# zbar.decode(img) - print('Done') +# print('Done') -def test_cv2_segfault_3(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') +# def test_cv2_segfault_3(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') - print('cv2.imread') - img = cv2.imread('tests/data/test_googleauth_export.png') +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] - print(f'detect and decode for qr_mode {qr_mode_2}') - if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: +# print(f'detect and decode for qr_mode {qr_mode_2}') +# if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: - print('cv.QRCodeDetector()') - cv2.QRCodeDetector() +# print('cv.QRCodeDetector()') +# cv2.QRCodeDetector() - print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') - from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector +# print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') +# from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector - elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: - cv2.QRCodeDetector().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: - cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: - zbar.decode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: +# cv2.QRCodeDetector().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: +# cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: +# zbar.decode(img) - print('Done') +# print('Done') -def test_cv2_segfault_4(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') +# def test_cv2_segfault_4(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') - print('cv2.imread') - img = cv2.imread('tests/data/test_googleauth_export.png') +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] - print(f'detect and decode for qr_mode {qr_mode_2}') - if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: +# print(f'detect and decode for qr_mode {qr_mode_2}') +# if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: - print('cv.QRCodeDetector()') - cv2.QRCodeDetector() +# print('cv.QRCodeDetector()') +# cv2.QRCodeDetector() - print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') - from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector +# print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') +# from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector - print('_YoloV3QRDetector()') - _YoloV3QRDetector() +# print('_YoloV3QRDetector()') +# _YoloV3QRDetector() - elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: - cv2.QRCodeDetector().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: - cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: - zbar.decode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: +# cv2.QRCodeDetector().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: +# cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: +# zbar.decode(img) - print('Done') +# print('Done') -def test_cv2_segfault_5(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') +# def test_cv2_segfault_5(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') - print('cv2.imread') - img = cv2.imread('tests/data/test_googleauth_export.png') +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] - print(f'detect and decode for qr_mode {qr_mode_2}') - if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: +# print(f'detect and decode for qr_mode {qr_mode_2}') +# if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: - print('cv.QRCodeDetector()') - cv2.QRCodeDetector() +# print('cv.QRCodeDetector()') +# cv2.QRCodeDetector() - print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') - from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector +# print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') +# from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector - print('_YoloV3QRDetector()') - _YoloV3QRDetector() +# print('_YoloV3QRDetector()') +# _YoloV3QRDetector() - print('from qreader import QReader') - from qreader import QReader +# print('from qreader import QReader') +# from qreader import QReader - elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: - cv2.QRCodeDetector().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: - cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: - zbar.decode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: +# cv2.QRCodeDetector().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: +# cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: +# zbar.decode(img) - print('Done') +# print('Done') -def test_cv2_segfault_6(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') +# def test_cv2_segfault_6(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') - print('cv2.imread') - img = cv2.imread('tests/data/test_googleauth_export.png') +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] - print(f'detect and decode for qr_mode {qr_mode_2}') - if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: +# print(f'detect and decode for qr_mode {qr_mode_2}') +# if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: - print('cv.QRCodeDetector()') - cv2.QRCodeDetector() +# print('cv.QRCodeDetector()') +# cv2.QRCodeDetector() - print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') - from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector +# print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') +# from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector - print('_YoloV3QRDetector()') - _YoloV3QRDetector() +# print('_YoloV3QRDetector()') +# _YoloV3QRDetector() - print('from qreader import QReader') - from qreader import QReader +# print('from qreader import QReader') +# from qreader import QReader - print('QReader()') - qreader = QReader() +# print('QReader()') +# qreader = QReader() - elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: - cv2.QRCodeDetector().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: - cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: - zbar.decode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: +# cv2.QRCodeDetector().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: +# cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: +# zbar.decode(img) - print('Done') +# print('Done') -def test_cv2_segfault_6_d0(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') +# def test_cv2_segfault_6_d0(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') - print('cv2.imread') - img = cv2.imread('tests/data/test_googleauth_export.png') +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] - print(f'detect and decode for qr_mode {qr_mode_2}') - if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: +# print(f'detect and decode for qr_mode {qr_mode_2}') +# if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: - print('cv.QRCodeDetector()') - cv2_qr =cv2.QRCodeDetector() +# print('cv.QRCodeDetector()') +# cv2_qr =cv2.QRCodeDetector() - print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') - from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector +# print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') +# from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector - print('_YoloV3QRDetector()') - yolo = _YoloV3QRDetector() +# print('_YoloV3QRDetector()') +# yolo = _YoloV3QRDetector() - print('from qreader import QReader') - from qreader import QReader +# print('from qreader import QReader') +# from qreader import QReader - print('QReader()') - qreader = QReader() +# print('QReader()') +# qreader = QReader() - print('cv2.dnn.blobFromImage') - _INPUT_SIZE = (416, 416) - _CONF_THRESHOLD = 0.5 +# print('cv2.dnn.blobFromImage') +# _INPUT_SIZE = (416, 416) +# _CONF_THRESHOLD = 0.5 - blob = cv2.dnn.blobFromImage(img, 1 / 255, _INPUT_SIZE, swapRB=False, crop=False) - # self.yolo_v3_QR_detector.setInput(blob=blob) - # output = self.yolo_v3_QR_detector.forward(self.output_layer_name) +# blob = cv2.dnn.blobFromImage(img, 1 / 255, _INPUT_SIZE, swapRB=False, crop=False) +# # self.yolo_v3_QR_detector.setInput(blob=blob) +# # output = self.yolo_v3_QR_detector.forward(self.output_layer_name) - elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: - cv2.QRCodeDetector().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: - cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: - zbar.decode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: +# cv2.QRCodeDetector().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: +# cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: +# zbar.decode(img) - print('Done') +# print('Done') def test_cv2_segfault_6_d1(qr_mode: str) -> None: @@ -296,54 +296,106 @@ def test_cv2_segfault_6_d1(qr_mode: str) -> None: print('Done') -def test_cv2_segfault_6_d2(qr_mode: str) -> None: - print(f'QRmode: {qr_mode}') - +def test_cv2_segfault_6_f0() -> None: print('cv2.imread') img = cv2.imread('tests/data/test_googleauth_export.png') - qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] + yolo_v3_QR_detector = cv2.dnn.readNetFromDarknet(cfgFile='tests/data/qrcode-yolov3-tiny.cfg', darknetModel='tests/data/qrcode-yolov3-tiny_last.weights') + yolo_v3_QR_detector.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV) - print(f'detect and decode for qr_mode {qr_mode_2}') - if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: + output_layer_names = yolo_v3_QR_detector.getLayerNames() + output_layer_name = output_layer_names[yolo_v3_QR_detector.getUnconnectedOutLayers()[0] - 1] - print('cv.QRCodeDetector()') - cv2_qr =cv2.QRCodeDetector() + print('cv2.dnn.blobFromImage') + _INPUT_SIZE = (416, 416) + _CONF_THRESHOLD = 0.5 - print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') - from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector + blob = cv2.dnn.blobFromImage(img, 1 / 255, _INPUT_SIZE, swapRB=False, crop=False) - print('_YoloV3QRDetector()') - yolo = _YoloV3QRDetector() + print('yolo.yolo_v3_QR_detector.setInput') + yolo_v3_QR_detector.setInput(blob=blob) - print('from qreader import QReader') - from qreader import QReader + # Transform the image to blob and predict + # print('yolo_v3_QR_detector.forward') + # output = yolo_v3_QR_detector.forward(output_layer_name) - print('QReader()') - qreader = QReader() + print('Done') - print('cv2.dnn.blobFromImage') - _INPUT_SIZE = (416, 416) - _CONF_THRESHOLD = 0.5 - blob = cv2.dnn.blobFromImage(img, 1 / 255, _INPUT_SIZE, swapRB=False, crop=False) +def test_cv2_segfault_6_f1() -> None: + print('cv2.imread') + img = cv2.imread('tests/data/test_googleauth_export.png') - print('yolo.yolo_v3_QR_detector.setInput') - yolo.yolo_v3_QR_detector.setInput(blob=blob) + yolo_v3_QR_detector = cv2.dnn.readNetFromDarknet(cfgFile='tests/data/qrcode-yolov3-tiny.cfg', darknetModel='tests/data/qrcode-yolov3-tiny_last.weights') + yolo_v3_QR_detector.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV) - print('yolo.yolo_v3_QR_detector.forward') - output = yolo.yolo_v3_QR_detector.forward(yolo.output_layer_name) + output_layer_names = yolo_v3_QR_detector.getLayerNames() + output_layer_name = output_layer_names[yolo_v3_QR_detector.getUnconnectedOutLayers()[0] - 1] - elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: - cv2.QRCodeDetector().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: - cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) - elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: - zbar.decode(img) + print('cv2.dnn.blobFromImage') + _INPUT_SIZE = (416, 416) + _CONF_THRESHOLD = 0.5 + + blob = cv2.dnn.blobFromImage(img, 1 / 255, _INPUT_SIZE, swapRB=False, crop=False) + + print('yolo.yolo_v3_QR_detector.setInput') + yolo_v3_QR_detector.setInput(blob=blob) + + # Transform the image to blob and predict + print('yolo_v3_QR_detector.forward') + output = yolo_v3_QR_detector.forward(output_layer_name) print('Done') +# def test_cv2_segfault_6_d2(qr_mode: str) -> None: +# print(f'QRmode: {qr_mode}') + +# print('cv2.imread') +# img = cv2.imread('tests/data/test_googleauth_export.png') + +# qr_mode_2 = extract_otp_secrets.QRMode[qr_mode] + +# print(f'detect and decode for qr_mode {qr_mode_2}') +# if qr_mode_2 in [extract_otp_secrets.QRMode.QREADER, extract_otp_secrets.QRMode.DEEP_QREADER]: + +# print('cv.QRCodeDetector()') +# cv2_qr =cv2.QRCodeDetector() + +# print('from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector') +# from __yolo_v3_qr_detector.yolov3_qr_detector import _YoloV3QRDetector + +# print('_YoloV3QRDetector()') +# yolo = _YoloV3QRDetector() + +# print('from qreader import QReader') +# from qreader import QReader + +# print('QReader()') +# qreader = QReader() + +# print('cv2.dnn.blobFromImage') +# _INPUT_SIZE = (416, 416) +# _CONF_THRESHOLD = 0.5 + +# blob = cv2.dnn.blobFromImage(img, 1 / 255, _INPUT_SIZE, swapRB=False, crop=False) + +# print('yolo.yolo_v3_QR_detector.setInput') +# yolo.yolo_v3_QR_detector.setInput(blob=blob) + +# print('yolo.yolo_v3_QR_detector.forward') +# output = yolo.yolo_v3_QR_detector.forward(yolo.output_layer_name) + +# elif qr_mode_2 == extract_otp_secrets.QRMode.CV2: +# cv2.QRCodeDetector().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.WECHAT: +# cv2.wechat_qrcode.WeChatQRCode().detectAndDecode(img) +# elif qr_mode_2 == extract_otp_secrets.QRMode.ZBAR: +# zbar.decode(img) + +# print('Done') + + # def test_cv2_segfault_6_d1(qr_mode: str) -> None: # print(f'QRmode: {qr_mode}')