def test_qrcode_is_last_page(self): self.read.nrOfBoxesPerLine = 2 self.read.maxNrOfLinesPerPage = 2 self.read.nrOfSymbols = 5 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) qr_one = QrCode(5,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) self.assertTrue(qr_one.is_last_page())
def test_qrcode_get_nr_of_lines_in_last_pageV3(self): self.read.nrOfBoxesPerLine = 2 self.read.maxNrOfLinesPerPage = 2 self.read.nrOfSymbols = 49 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) qr_one = QrCode(49,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) result = qr_one.get_nr_of_lines_in_last_page() expected = 1 self.assertEqual(expected,result)
def test_qr_in_each_row_last_page(self): self.read.nrOfBoxesPerLine = 9 self.read.maxNrOfLinesPerPage = 3 self.read.nrOfSymbols = 53 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) qr_one = QrCode(28,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_two = QrCode(37,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_three = QrCode(52,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qrcodes = [qr_one,qr_two,qr_three] self.assertTrue(self.read.isQrcodeOnEachRow(qrcodes))
def test_not_qr_in_each_row(self): self.read.nrOfBoxesPerLine = 9 self.read.maxNrOfLinesPerPage = 3 self.read.nrOfSymbols = 100 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) qr_one = QrCode(2,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_two = QrCode(18,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) #qr_three = QrCode(23,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qrcodes = [qr_one,qr_two] self.assertFalse(self.read.isQrcodeOnEachRow(qrcodes))
def test_has_quarter_spacing_true(self): self.read.nrOfBoxesPerLine = 9 self.read.maxNrOfLinesPerPage = 3 self.read.nrOfSymbols = 100 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) qr_one = QrCode(3,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_two = QrCode(5,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_three = QrCode(7,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qrcodes = [qr_one,qr_two,qr_three] self.assertTrue(self.read.has_quarter_spacing(qrcodes))
def test_identify_unknown_qrcodes_in_row_next_page(self): self.read.nrOfBoxesPerLine = 9 self.read.maxNrOfLinesPerPage = 3 self.read.nrOfSymbols = 45 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) qr_one = QrCode(38,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_two = QrCode(43,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qrcodes = [qr_one,qr_two] result = self.read.identify_unknown_qrcodes_in_row(2,qrcodes) expected = [37,39,40,41,42,44,45] self.assertEqual(expected,result)
def test_identify_unknown_qrcodes_in_row(self): self.read.nrOfBoxesPerLine = 9 self.read.maxNrOfLinesPerPage = 3 self.read.nrOfSymbols = 100 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) qr_one = QrCode(3,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_two = QrCode(5,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_three = QrCode(7,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qrcodes = [qr_one,qr_two,qr_three] result = self.read.identify_unknown_qrcodes_in_row(1,qrcodes) expected = [1,2,4,6,8,9] self.assertEqual(expected,result)
def test_avg_qr_width_per_row(self): self.read.nrOfBoxesPerLine = 9 self.read.maxNrOfLinesPerPage = 3 self.read.nrOfSymbols = 100 self.read.nrOfLinesInTemplate = math.ceil(self.read.nrOfSymbols/(self.read.maxNrOfLinesPerPage)) self.read.m = 100 width_one = 5 width_two = 10 width_three = 20 qr_one = QrCode(3,1,2,width_one,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_two = QrCode(5,1,2,width_two,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_three = QrCode(7,1,2,width_three,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qrcodes = [qr_one,qr_two,qr_three] self.assertEqual(int(35/3),self.read.avg_qr_width_per_row(qrcodes)) self.assertNotEqual(int(32/3),self.read.avg_qr_width_per_row(qrcodes))
def test_most_left_colum(self): self.read.nrOfBoxesPerLine = 9 self.read.nrOfLinesPerPage = 3 self.read.nrOfSymbols = 100 qr_one = QrCode(3,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_two = QrCode(5,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qr_three = QrCode(8,1,2,3,4,self.read.nrOfSymbols,self.read.nrOfBoxesPerLine,self.read.nrOfLinesInTemplate,self.read.maxNrOfLinesPerPage) qrcodes = [qr_one,qr_two,qr_three] r1 = self.read.get_most_left_column_per_row(1,qr_one) r2 = self.read.get_most_left_column_per_row(3,qr_one) r3 = self.read.get_most_left_column_per_row(4,qr_one) r4 = self.read.get_most_left_column_per_row(99,qr_three) self.assertEqual(1,r1) self.assertEqual(3,r2) self.assertEqual(3,r3) self.assertEqual(8,r4)
def test_generator(self): """ Test the qr generator by reading multiple generated codes. """ for code in ['1003', '1234']: qr_code = QrCode(code) path = qr_code.save(qr_code.img) print(path) interpreter = qrtools.QR() interpreter.decode(path) interpreted_code = interpreter.data self.assertEqual(code, interpreted_code) os.remove(path)
def returnBook(self, cloudDB, userName): bookReturnList = cloudDB.getAllBookIdListUserBorrowed(userName) if len(bookReturnList) == 0: print("You don't have any book to return!") else: print("You can return book No:" + str(bookReturnList)) for bookID in bookReturnList: cloudDB.printABookDetail(bookID) print("In which way you want to return the book?") print("1. Enter ID") print("2. Scan QR Code") option = TakeInput.inputInteger(1,2) if option == 1: print("Which book you want to return?") bookId = int(input('Please input the book id you want to return:')) while ((bookId in bookReturnList) == False): bookId = int(input("Book Id invalid, please re-enter:")) else: print("Please place the book Qr Code infront of the web camera..") bookId = int(QrCode.scan()) while ((bookId in bookReturnList) == False): print("Invalid QrCode, please don't return the book you didn't borrow.") return print("You are returning book No." + str(bookId)) eId = cloudDB.getEid(userName, bookId) EventManager.deleteEvent(eId) returnDate = datetime.now().strftime("%Y-%m-%d %H:%M:%S") cloudDB.returnBook(eId,returnDate) print('Book returned successfully! Thank you!') return
# Published: 12/2/2018 #----------------------------------------------------------------------------- """ import cv2 from QrCode import QrCode from argparse import ArgumentParser if __name__ == '__main__': parser = ArgumentParser() parser.add_argument("-q", type=str, dest="code", help="String to encode.") options = parser.parse_args() DEFAULT_CODE = '1003' # It's not necessary for this to be a string here, it should work with any value # that has a valid strign representation. qr_code = QrCode(options.code if options.code else DEFAULT_CODE) # Shows the QR code qr_code.show() # Saves the QR code with its 4 segments separated out to an image in the current # directory qr_code.save() # Waits indefinitely until a key is pressed. cv2.waitKey(0) # Clean up any windows left over by OpenCV tasks. cv2.destroyAllWindows()
---------- image: np array Image with qr code. Returns ------- int or None """ data = decode(image) ## Outputs 4 corner locations as well!! if data: data = int(data[0][0]) return data if __name__ == '__main__': import os, sys sys.path.append( os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'generator')) from QrCode import QrCode number = '4545' code = QrCode(number).img print(f'Interpreted: {read(code)}, Real {number}')
def draw_qr_code(self, screen): width_in_modules = self.width_in_modules + 8 height_in_modules = self.height_in_modules + 8 pixels_per_module = min(self.width_in_pixels // width_in_modules, self.height_in_pixels // height_in_modules) for y in range(height_in_modules): for x in range(width_in_modules): col = (0, 0, 0) if self.matrix[y][x] == 1 else (255, 255, 255) if self.matrix[y][x] == 0 else\ (0, 0, 255) if self.matrix[y][x] == 4 else (255, 0, 0) if self.matrix[y][x] == 3 else\ (0, 255, 0) if self.matrix[y][x] == 2 else (128, 128, 128) pygame.draw.rect(screen, col, (x * pixels_per_module, y * pixels_per_module, (x + 1) * pixels_per_module, (y + 1) * pixels_per_module)) pygame.draw.rect(screen, (255, 255, 255), (width_in_modules * pixels_per_module, 0, self.width_in_pixels, self.height_in_pixels)) pygame.draw.rect(screen, (255, 255, 255), (0, height_in_modules * pixels_per_module, self.width_in_pixels, self.height_in_pixels)) if __name__ == '__main__': qr = QrCode(error_correction_level=3, minimum_version=1) qr.generate( 'Ratio of circle circumference to diameter (C/D) π = 3.141592653589793238462643383279....' ) qr_draw = QrCodeDraw(qr) qr_draw.draw()