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)
Esempio n. 10
0
    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)
Esempio n. 11
0
 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
Esempio n. 12
0
# 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()
Esempio n. 13
0
    ----------
    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}')
Esempio n. 14
0
    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()