#!/usr/bin/env python3 import cv2 import banner_ivu_export import numpy as np from util import fprint import requests class qr_reader(): camera = None def __init__(self, ip, port): self.ip = ip self.port = port self.url = "http://" + ip + ":" + str(port) + "/barcode" #self.camera = banner_ivu_export.DriveImg(ip, port) # def read_qr(self, tries=1): # print("Trying " + str(tries) + " frames.") # self.camera = banner_ivu_export.DriveImg(self.ip, self.port) # for x in range(tries): # print(str(x) + " ", end="", flush=True) # imgtype, img = self.camera.read_img() # if img is not None: # #fprint(imgtype) # image_array = np.frombuffer(img, np.uint8) # img = cv2.imdecode(image_array, cv2.IMREAD_COLOR) # #cv2.imshow('Image', img) # #cv2.waitKey(1) # detect = cv2.QRCodeDetector() # value, points, straight_qrcode = detect.detectAndDecode(img) # if value != "": # self.camera.close() # return value # else: # print("\nGot no image for " + str(x)) # self.camera.close() # return False def read_qr(self, tries=1): try: response = requests.get(self.url, timeout=tries * 15) response.raise_for_status() # Raise an error for bad status codes print(response.text) # Or handle the response as needed if len(response.text) < 8: return False return response.text except requests.Timeout: print(f'The request timed out after {tries * 15} seconds') except requests.RequestException as e: print(f'An error occurred: {e}') return False class video_streamer(): camera = None def __init__(self, ip, port): self.camera = banner_ivu_export.DriveImg(ip, port) def get_frame(self): try: return self.camera.read_img() except: return False if __name__ == "__main__": test = qr_reader("192.168.1.125", 32200) import time while True: fprint(test.read_qr(300)) time.sleep(1)