├── Basics ├── 5_Must_Know_OpenCV_Functions.py ├── ColorPicker.py ├── Crop_Resize_Images.py ├── Detecting_Clicks_On_Images.py ├── Draw_Shapes_Text.py ├── Intsall.py ├── Joining_Multiple_Images_To_Display.py ├── Read_Image_Video_Webcam.py ├── Warp_Prespective.py └── screenCap.py ├── Intermediate ├── Custom Object Detection │ ├── createData.py │ ├── haarcascades │ │ ├── haarcascade_eye.xml │ │ ├── haarcascade_eye_tree_eyeglasses.xml │ │ ├── haarcascade_frontalcatface.xml │ │ ├── haarcascade_frontalcatface_extended.xml │ │ ├── haarcascade_frontalface_alt.xml │ │ ├── haarcascade_frontalface_alt2.xml │ │ ├── haarcascade_frontalface_alt_tree.xml │ │ ├── haarcascade_frontalface_default.xml │ │ ├── haarcascade_fullbody.xml │ │ ├── haarcascade_lefteye_2splits.xml │ │ ├── haarcascade_licence_plate_rus_16stages.xml │ │ ├── haarcascade_lowerbody.xml │ │ ├── haarcascade_profileface.xml │ │ ├── haarcascade_righteye_2splits.xml │ │ ├── haarcascade_russian_plate_number.xml │ │ ├── haarcascade_smile.xml │ │ ├── haarcascade_upperbody.xml │ │ └── haarcascade_wall_clock.xml │ └── objectDetectoin.py ├── Object Measurement │ ├── 1.jpg │ ├── ObjectMeasurement.py │ ├── ReadMe.md │ └── utlis.py ├── QrCodeBarCode │ ├── 1.png │ ├── Images │ │ ├── Barcode (1).gif │ │ ├── Barcode (4).gif │ │ ├── Barcode (5).gif │ │ ├── Barnangen.png │ │ ├── Emily.png │ │ ├── Jhon.png │ │ ├── Perfume.png │ │ ├── Qr (1).png │ │ ├── Qr (2).png │ │ ├── Qr (3).png │ │ ├── Qr (4).png │ │ ├── Qr (5).png │ │ ├── Qr (6).png │ │ ├── Qr (7).png │ │ ├── Qr (8).png │ │ ├── Qr (9).png │ │ └── Vitamin.png │ ├── QrBarTest.py │ ├── QrCodeProject.py │ ├── Readme.md │ └── myDataFile.text ├── RealTime_Color_Detection.py ├── RealTime_Shape_Detection_Contours.py ├── TextDetection │ ├── ReadMe.md │ ├── TextMoreExamples.py │ ├── TextSimple.py │ ├── oem.PNG │ └── psm.PNG └── objectTracking.py ├── README.md ├── Resources ├── chess.jpg ├── lena.png ├── readme.md ├── shapes.png └── testVideo.mp4 └── thumbnails ├── 0.jpg ├── 1.jpg ├── 10.png ├── 11.PNG ├── 2.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg ├── 6.jpg ├── 7.jpg ├── 8.jpg ├── 9.jpg ├── QrCode.jpg ├── ScreenCap.gif └── TextDetection.gif /Basics/5_Must_Know_OpenCV_Functions.py: -------------------------------------------------------------------------------- 1 | 2 | import cv2 3 | import numpy as np 4 | 5 | kernel = np.ones((5,5),np.uint8) 6 | print(kernel) 7 | 8 | path = "Resources/lena.png" 9 | img = cv2.imread(path) 10 | imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 11 | imgBlur = cv2.GaussianBlur(imgGray,(7,7),0) 12 | imgCanny = cv2.Canny(imgBlur,100,200) 13 | imgDilation = cv2.dilate(imgCanny,kernel , iterations = 10) 14 | imgEroded = cv2.erode(imgDilation,kernel,iterations=2) 15 | 16 | cv2.imshow("Lena",img) 17 | cv2.imshow("GrayScale",imgGray) 18 | cv2.imshow("Img Blur",imgBlur) 19 | cv2.imshow("Img Canny",imgCanny) 20 | cv2.imshow("Img Dialation",imgDilation) 21 | cv2.imshow("Img Erosion",imgEroded) 22 | cv2.waitKey(0) 23 | -------------------------------------------------------------------------------- /Basics/ColorPicker.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | ############################################ 5 | cap = cv2.VideoCapture(1) 6 | path = 'test.png' 7 | ############################################ 8 | 9 | def empty(a): 10 | pass 11 | 12 | 13 | def stackImages(scale, imgArray): 14 | rows = len(imgArray) 15 | cols = len(imgArray[0]) 16 | rowsAvailable = isinstance(imgArray[0], list) 17 | width = imgArray[0][0].shape[1] 18 | height = imgArray[0][0].shape[0] 19 | if rowsAvailable: 20 | for x in range(0, rows): 21 | for y in range(0, cols): 22 | if imgArray[x][y].shape[:2] == imgArray[0][0].shape[:2]: 23 | imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale) 24 | else: 25 | imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), 26 | None, scale, scale) 27 | if len(imgArray[x][y].shape) == 2: imgArray[x][y] = cv2.cvtColor(imgArray[x][y], cv2.COLOR_GRAY2BGR) 28 | imageBlank = np.zeros((height, width, 3), np.uint8) 29 | hor = [imageBlank] * rows 30 | hor_con = [imageBlank] * rows 31 | for x in range(0, rows): 32 | hor[x] = np.hstack(imgArray[x]) 33 | ver = np.vstack(hor) 34 | else: 35 | for x in range(0, rows): 36 | if imgArray[x].shape[:2] == imgArray[0].shape[:2]: 37 | imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale) 38 | else: 39 | imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None, scale, scale) 40 | if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR) 41 | hor = np.hstack(imgArray) 42 | ver = hor 43 | return ver 44 | 45 | 46 | cv2.namedWindow("TrackBars") 47 | cv2.resizeWindow("TrackBars", 640, 240) 48 | cv2.createTrackbar("Hue Min", "TrackBars", 0, 179, empty) 49 | cv2.createTrackbar("Hue Max", "TrackBars", 179, 179, empty) 50 | cv2.createTrackbar("Sat Min", "TrackBars", 0, 255, empty) 51 | cv2.createTrackbar("Sat Max", "TrackBars", 255, 255, empty) 52 | cv2.createTrackbar("Val Min", "TrackBars", 0, 255, empty) 53 | cv2.createTrackbar("Val Max", "TrackBars", 255, 255, empty) 54 | 55 | while True: 56 | # img = cv2.imread(path) #for image 57 | _, img = cap.read() # for Video 58 | imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 59 | h_min = cv2.getTrackbarPos("Hue Min", "TrackBars") 60 | h_max = cv2.getTrackbarPos("Hue Max", "TrackBars") 61 | s_min = cv2.getTrackbarPos("Sat Min", "TrackBars") 62 | s_max = cv2.getTrackbarPos("Sat Max", "TrackBars") 63 | v_min = cv2.getTrackbarPos("Val Min", "TrackBars") 64 | v_max = cv2.getTrackbarPos("Val Max", "TrackBars") 65 | print(f'{h_min},{h_max},{s_min},{s_max},{v_min},{v_max}') 66 | lower = np.array([h_min, s_min, v_min]) 67 | upper = np.array([h_max, s_max, v_max]) 68 | mask = cv2.inRange(imgHSV, lower, upper) 69 | imgResult = cv2.bitwise_and(img, img, mask=mask) 70 | 71 | # cv2.imshow("Original",img) 72 | # cv2.imshow("HSV",imgHSV) 73 | # cv2.imshow("Mask", mask) 74 | # cv2.imshow("Result", imgResult) 75 | 76 | imgStack = stackImages(0.6, ([img, imgHSV], [mask, imgResult])) 77 | cv2.imshow("Stacked Images", imgStack) 78 | 79 | cv2.waitKey(1) 80 | -------------------------------------------------------------------------------- /Basics/Crop_Resize_Images.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | path = "Resources/road.jpg" 4 | img = cv2.imread(path) 5 | print(img.shape) 6 | 7 | width ,height = 1000 , 1000 8 | imgResize = cv2.resize(img,(width,height)) 9 | print(imgResize.shape) 10 | 11 | imgCropped = img[300:540,430:480] 12 | imCropResize = cv2.resize(imgCropped,(img.shape[1],img.shape[0])) 13 | 14 | cv2.imshow("Road",img) 15 | cv2.imshow("Road Resized",imgResize) 16 | cv2.imshow("Road Cropped",imgCropped) 17 | cv2.imshow("Road Cropped Resized",imCropResize) 18 | cv2.waitKey(0) 19 | -------------------------------------------------------------------------------- /Basics/Detecting_Clicks_On_Images.py: -------------------------------------------------------------------------------- 1 | ################### Simple Detect ############# 2 | 3 | # import cv2 4 | # def mousePoints(event,x,y,flags,params): 5 | # if event == cv2.EVENT_LBUTTONDOWN: 6 | # print(x,y) 7 | # 8 | # img = cv2.imread('Resources/cards.jpg') 9 | # cv2.imshow("Original Image ", img) 10 | # cv2.setMouseCallback("Original Image ", mousePoints) 11 | # cv2.waitKey(0) 12 | 13 | 14 | ######### WARP PRESPECTIVE IMPLEMANTAION WITH MOUSE CLICKS ################## 15 | 16 | import cv2 17 | import numpy as np 18 | 19 | circles = np.zeros((4,2),np.int) 20 | counter = 0 21 | 22 | def mousePoints(event,x,y,flags,params): 23 | global counter 24 | if event == cv2.EVENT_LBUTTONDOWN: 25 | 26 | circles[counter] = x,y 27 | counter = counter + 1 28 | print(circles) 29 | 30 | 31 | 32 | img = cv2.imread('Resources/cards.jpg') 33 | while True: 34 | 35 | 36 | if counter == 4: 37 | width, height = 250,350 38 | pts1 = np.float32([circles[0],circles[1],circles[2],circles[3]]) 39 | pts2 = np.float32([[0,0],[width,0],[0,height],[width,height]]) 40 | matrix = cv2.getPerspectiveTransform(pts1,pts2) 41 | imgOutput = cv2.warpPerspective(img,matrix,(width,height)) 42 | cv2.imshow("Output Image ", imgOutput) 43 | 44 | 45 | for x in range (0,4): 46 | cv2.circle(img,(circles[x][0],circles[x][1]),3,(0,255,0),cv2.FILLED) 47 | 48 | cv2.imshow("Original Image ", img) 49 | cv2.setMouseCallback("Original Image ", mousePoints) 50 | cv2.waitKey(1) 51 | -------------------------------------------------------------------------------- /Basics/Draw_Shapes_Text.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | img = np.zeros((512,512,3),np.uint8) 5 | # 0 255 6 | print(img) 7 | #img[:] = 255 ,0,0 8 | 9 | cv2.line(img,(0,0),(img.shape[1],img.shape[0]),(0,255,0),2) 10 | cv2.rectangle(img,(350,100),(450,200),(0,0,255),cv2.FILLED) 11 | cv2.circle(img,(150,400),50,(255,0,0),3) 12 | cv2.putText(img,"Draw Shapes ",(75,50),cv2.FONT_HERSHEY_COMPLEX,1,(0,150,0),1) 13 | 14 | cv2.imshow("Image", img) 15 | 16 | cv2.waitKey(0) 17 | -------------------------------------------------------------------------------- /Basics/Intsall.py: -------------------------------------------------------------------------------- 1 | #In this tutorial we learn how to install PYTHON and PYCHARM. Later we install the OPENCV plugin and test it out. 2 | 3 | # Links 4 | # https://python.org/downloads/ 5 | # https://www.jetbrains.com/pycharm/download/#section=windows 6 | 7 | 8 | #Install Python first and then install the Pycharm Community Edition 9 | #To install opencv go to pycharm then 10 | # File - Settings - Project - Project Interpreter - "+" (add button) - Search for opencv-python and click on Install Package 11 | # Then search for numpy and install 12 | # Create a new python file and run the code below to test the installation 13 | 14 | import cv2 15 | import numpy 16 | print("This is a Text) 17 | -------------------------------------------------------------------------------- /Basics/Joining_Multiple_Images_To_Display.py: -------------------------------------------------------------------------------- 1 | ####################### STACKING USING THE FUNCTION ##################### 2 | 3 | import cv2 4 | import numpy as np 5 | 6 | frameWidth = 640 7 | frameHeight = 480 8 | cap = cv2.VideoCapture(0) 9 | cap.set(3, frameWidth) 10 | cap.set(4, frameHeight) 11 | 12 | def stackImages(imgArray,scale,lables=[]): 13 | sizeW= imgArray[0][0].shape[1] 14 | sizeH = imgArray[0][0].shape[0] 15 | rows = len(imgArray) 16 | cols = len(imgArray[0]) 17 | rowsAvailable = isinstance(imgArray[0], list) 18 | width = imgArray[0][0].shape[1] 19 | height = imgArray[0][0].shape[0] 20 | if rowsAvailable: 21 | for x in range ( 0, rows): 22 | for y in range(0, cols): 23 | imgArray[x][y] = cv2.resize(imgArray[x][y], (sizeW, sizeH), None, scale, scale) 24 | if len(imgArray[x][y].shape) == 2: imgArray[x][y]= cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR) 25 | imageBlank = np.zeros((height, width, 3), np.uint8) 26 | hor = [imageBlank]*rows 27 | hor_con = [imageBlank]*rows 28 | for x in range(0, rows): 29 | hor[x] = np.hstack(imgArray[x]) 30 | hor_con[x] = np.concatenate(imgArray[x]) 31 | ver = np.vstack(hor) 32 | ver_con = np.concatenate(hor) 33 | else: 34 | for x in range(0, rows): 35 | imgArray[x] = cv2.resize(imgArray[x], (sizeW, sizeH), None, scale, scale) 36 | if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR) 37 | hor= np.hstack(imgArray) 38 | hor_con= np.concatenate(imgArray) 39 | ver = hor 40 | if len(lables) != 0: 41 | eachImgWidth= int(ver.shape[1] / cols) 42 | eachImgHeight = int(ver.shape[0] / rows) 43 | print(eachImgHeight) 44 | for d in range(0, rows): 45 | for c in range (0,cols): 46 | cv2.rectangle(ver,(c*eachImgWidth,eachImgHeight*d),(c*eachImgWidth+len(lables[d][c])*13+27,30+eachImgHeight*d),(255,255,255),cv2.FILLED) 47 | cv2.putText(ver,lables[d][c],(eachImgWidth*c+10,eachImgHeight*d+20),cv2.FONT_HERSHEY_COMPLEX,0.7,(255,0,255),2) 48 | return ver 49 | 50 | while True: 51 | success, img = cap.read() 52 | kernel = np.ones((5,5),np.uint8) 53 | print(kernel) 54 | #path = "Resources/lena.png" 55 | #img = cv2.imread(path) 56 | imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 57 | imgBlur = cv2.GaussianBlur(imgGray,(7,7),0) 58 | imgCanny = cv2.Canny(imgBlur,100,200) 59 | imgDilation = cv2.dilate(imgCanny,kernel , iterations = 2) 60 | imgEroded = cv2.erode(imgDilation,kernel,iterations=2) 61 | 62 | #imgBlank = np.zeros((200,200),np.uint8) 63 | StackedImages = stackImages(([img,imgGray,imgBlur], 64 | [imgCanny,imgDilation,imgEroded]),0.6) 65 | cv2.imshow("Staked Images", StackedImages) 66 | if cv2.waitKey(1) & 0xFF == ord('q'): 67 | break 68 | 69 | 70 | ################### Stacking images without Function ################ 71 | # import cv2 72 | # import numpy as np 73 | # img1 = cv2.imread('../Resources/lena.png',0) 74 | # img2 = cv2.imread('../Resources/land.jpg') 75 | # print(img1.shape) 76 | # print(img2.shape) 77 | # img1 = cv2.resize(img1, (0, 0), None, 0.5, 0.5) 78 | # img2 = cv2.resize(img2, (0, 0), None, 0.5, 0.5) 79 | # img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR) 80 | # hor= np.hstack((img1, img2)) 81 | # ver = np.vstack((img1, img2)) 82 | # cv2.imshow('Vertical', ver) 83 | # cv2.imshow('Horizontal', hor) 84 | # cv2.waitKey(0) 85 | -------------------------------------------------------------------------------- /Basics/Read_Image_Video_Webcam.py: -------------------------------------------------------------------------------- 1 | 2 | ######################## READ IMAGE ############################ 3 | # import cv2 4 | # # LOAD AN IMAGE USING 'IMREAD' 5 | # img = cv2.imread("Resources/lena.png") 6 | # # DISPLAY 7 | # cv2.imshow("Lena Soderberg",img) 8 | # cv2.waitKey(0) 9 | 10 | ######################### READ VIDEO ############################# 11 | # import cv2 12 | # frameWidth = 640 13 | # frameHeight = 480 14 | # cap = cv2.VideoCapture("Resources/testVideo.mp4") 15 | # while True: 16 | # success, img = cap.read() 17 | # img = cv2.resize(img, (frameWidth, frameHeight)) 18 | # cv2.imshow("Result", img) 19 | # if cv2.waitKey(1) & 0xFF == ord('q'): 20 | # break 21 | ######################### READ WEBCAM ############################ 22 | import cv2 23 | frameWidth = 640 24 | frameHeight = 480 25 | cap = cv2.VideoCapture(0) 26 | cap.set(3, frameWidth) 27 | cap.set(4, frameHeight) 28 | while True: 29 | success, img = cap.read() 30 | cv2.imshow("Result", img) 31 | if cv2.waitKey(1) & 0xFF == ord('q'): 32 | break 33 | -------------------------------------------------------------------------------- /Basics/Warp_Prespective.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | img = cv2.imread('Resources/cards.jpg') 5 | 6 | width, height = 250,350 7 | pts1 = np.float32([[111,219],[287,188],[154,482],[352,440]]) 8 | pts2 = np.float32([[0,0],[width,0],[0,height],[width,height]]) 9 | matrix = cv2.getPerspectiveTransform(pts1,pts2) 10 | imgOutput = cv2.warpPerspective(img,matrix,(width,height)) 11 | 12 | for x in range (0,4): 13 | cv2.circle(img,(pts1[x][0],pts1[x][1]),15,(0,255,0),cv2.FILLED) 14 | 15 | cv2.imshow("Original Image ", img) 16 | cv2.imshow("Output Image ", imgOutput) 17 | cv2.waitKey(0) 18 | -------------------------------------------------------------------------------- /Basics/screenCap.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from PIL import ImageGrab 3 | import cv2 4 | 5 | 6 | def captureScreen(bbox=(50,50,690,530)): 7 | capScr = np.array(ImageGrab.grab(bbox)) 8 | capScr = cv2.cvtColor(capScr, cv2.COLOR_RGB2BGR) 9 | return capScr 10 | 11 | 12 | while True: 13 | timer = cv2.getTickCount() 14 | img = captureScreen() 15 | fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer); 16 | cv2.putText(img,'FPS {}'.format(int(fps)), (75, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (20, 230, 20), 2) 17 | cv2.imshow('Screen Capture',img) 18 | cv2.waitKey(1) 19 | -------------------------------------------------------------------------------- /Intermediate/Custom Object Detection/createData.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import os 3 | import time 4 | 5 | ##################################################### 6 | 7 | myPath = 'data/images' # Rasbperry Pi: '/home/pi/Desktop/data/images' 8 | cameraNo = 1 9 | cameraBrightness = 180 10 | moduleVal = 10 # SAVE EVERY ITH FRAME TO AVOID REPETITION 11 | minBlur = 500 # SMALLER VALUE MEANS MORE BLURRINESS PRESENT 12 | grayImage = False # IMAGES SAVED COLORED OR GRAY 13 | saveData = True # SAVE DATA FLAG 14 | showImage = True # IMAGE DISPLAY FLAG 15 | imgWidth = 180 16 | imgHeight = 120 17 | 18 | 19 | ##################################################### 20 | 21 | global countFolder 22 | cap = cv2.VideoCapture(cameraNo) 23 | cap.set(3, 640) 24 | cap.set(4, 480) 25 | cap.set(10,cameraBrightness) 26 | 27 | 28 | count = 0 29 | countSave =0 30 | 31 | def saveDataFunc(): 32 | global countFolder 33 | countFolder = 0 34 | while os.path.exists( myPath+ str(countFolder)): 35 | countFolder += 1 36 | os.makedirs(myPath + str(countFolder)) 37 | 38 | if saveData:saveDataFunc() 39 | 40 | 41 | while True: 42 | 43 | success, img = cap.read() 44 | img = cv2.resize(img,(imgWidth,imgHeight)) 45 | if grayImage:img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 46 | if saveData: 47 | blur = cv2.Laplacian(img, cv2.CV_64F).var() 48 | if count % moduleVal ==0 and blur > minBlur: 49 | nowTime = time.time() 50 | cv2.imwrite(myPath + str(countFolder) + 51 | '/' + str(countSave)+"_"+ str(int(blur))+"_"+str(nowTime)+".png", img) 52 | countSave+=1 53 | count += 1 54 | 55 | if showImage: 56 | cv2.imshow("Image", img) 57 | 58 | if cv2.waitKey(1) & 0xFF == ord('q'): 59 | break 60 | 61 | cap.release() 62 | cv2.destroyAllWindows() 63 | -------------------------------------------------------------------------------- /Intermediate/Custom Object Detection/haarcascades/haarcascade_licence_plate_rus_16stages.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 64 16 7 | 8 | <_> 9 | 10 | 11 | <_> 12 | 13 | <_> 14 | 15 | 16 | 17 | <_> 18 | 32 2 8 6 -1. 19 | <_> 20 | 32 4 8 2 3. 21 | 0 22 | 1.6915600746870041e-002 23 | -9.5547717809677124e-001 24 | 8.9129137992858887e-001 25 | <_> 26 | 27 | <_> 28 | 29 | 30 | 31 | <_> 32 | 0 4 6 10 -1. 33 | <_> 34 | 3 4 3 10 2. 35 | 0 36 | 2.4228349328041077e-002 37 | -9.2089319229125977e-001 38 | 8.8723921775817871e-001 39 | <_> 40 | 41 | <_> 42 | 43 | 44 | 45 | <_> 46 | 55 0 8 6 -1. 47 | <_> 48 | 55 0 4 3 2. 49 | <_> 50 | 59 3 4 3 2. 51 | 0 52 | -1.0168660432100296e-002 53 | 8.8940089941024780e-001 54 | -7.7847331762313843e-001 55 | <_> 56 | 57 | <_> 58 | 59 | 60 | 61 | <_> 62 | 44 7 4 9 -1. 63 | <_> 64 | 44 10 4 3 3. 65 | 0 66 | 2.0863260142505169e-003 67 | -8.7998157739639282e-001 68 | 5.8651781082153320e-001 69 | -2.0683259963989258e+000 70 | -1 71 | -1 72 | <_> 73 | 74 | 75 | <_> 76 | 77 | <_> 78 | 79 | 80 | 81 | <_> 82 | 29 1 16 4 -1. 83 | <_> 84 | 29 3 16 2 2. 85 | 0 86 | 2.9062159359455109e-002 87 | -8.7765061855316162e-001 88 | 8.5373121500015259e-001 89 | <_> 90 | 91 | <_> 92 | 93 | 94 | 95 | <_> 96 | 0 5 9 8 -1. 97 | <_> 98 | 3 5 3 8 3. 99 | 0 100 | 2.3903399705886841e-002 101 | -9.2079448699951172e-001 102 | 7.5155001878738403e-001 103 | <_> 104 | 105 | <_> 106 | 107 | 108 | 109 | <_> 110 | 44 0 20 14 -1. 111 | <_> 112 | 44 0 10 7 2. 113 | <_> 114 | 54 7 10 7 2. 115 | 0 116 | -3.5404648631811142e-002 117 | 6.7834627628326416e-001 118 | -9.0937072038650513e-001 119 | <_> 120 | 121 | <_> 122 | 123 | 124 | 125 | <_> 126 | 41 7 6 9 -1. 127 | <_> 128 | 43 7 2 9 3. 129 | 0 130 | 6.2988721765577793e-003 131 | -8.1054258346557617e-001 132 | 5.8985030651092529e-001 133 | <_> 134 | 135 | <_> 136 | 137 | 138 | 139 | <_> 140 | 0 4 21 4 -1. 141 | <_> 142 | 7 4 7 4 3. 143 | 0 144 | 3.4959490876644850e-003 145 | -9.7632282972335815e-001 146 | 4.5473039150238037e-001 147 | -1.6632349491119385e+000 148 | 0 149 | -1 150 | <_> 151 | 152 | 153 | <_> 154 | 155 | <_> 156 | 157 | 158 | 159 | <_> 160 | 31 2 11 6 -1. 161 | <_> 162 | 31 4 11 2 3. 163 | 0 164 | 2.3864099755883217e-002 165 | -9.3137168884277344e-001 166 | 8.2478952407836914e-001 167 | <_> 168 | 169 | <_> 170 | 171 | 172 | 173 | <_> 174 | 56 3 6 11 -1. 175 | <_> 176 | 59 3 3 11 2. 177 | 0 178 | -2.5775209069252014e-002 179 | 8.5526448488235474e-001 180 | -8.7574672698974609e-001 181 | <_> 182 | 183 | <_> 184 | 185 | 186 | 187 | <_> 188 | 32 14 32 2 -1. 189 | <_> 190 | 32 15 32 1 2. 191 | 0 192 | -1.0646049864590168e-002 193 | 8.5167151689529419e-001 194 | -6.7789041996002197e-001 195 | <_> 196 | 197 | <_> 198 | 199 | 200 | 201 | <_> 202 | 0 2 8 14 -1. 203 | <_> 204 | 4 2 4 14 2. 205 | 0 206 | 2.7000989764928818e-002 207 | -8.0041092634201050e-001 208 | 6.4893317222595215e-001 209 | <_> 210 | 211 | <_> 212 | 213 | 214 | 215 | <_> 216 | 19 0 22 6 -1. 217 | <_> 218 | 19 0 11 3 2. 219 | <_> 220 | 30 3 11 3 2. 221 | 0 222 | 5.2989721298217773e-003 223 | -9.5342522859573364e-001 224 | 5.0140267610549927e-001 225 | -1.3346730470657349e+000 226 | 1 227 | -1 228 | <_> 229 | 230 | 231 | <_> 232 | 233 | <_> 234 | 235 | 236 | 237 | <_> 238 | 56 0 6 6 -1. 239 | <_> 240 | 56 0 3 3 2. 241 | <_> 242 | 59 3 3 3 2. 243 | 0 244 | -6.9233630783855915e-003 245 | 8.2654470205307007e-001 246 | -8.5396027565002441e-001 247 | <_> 248 | 249 | <_> 250 | 251 | 252 | 253 | <_> 254 | 32 0 14 12 -1. 255 | <_> 256 | 32 0 7 6 2. 257 | <_> 258 | 39 6 7 6 2. 259 | 0 260 | 1.2539249658584595e-001 261 | -1.2996139936149120e-002 262 | -3.2377028808593750e+003 263 | <_> 264 | 265 | <_> 266 | 267 | 268 | 269 | <_> 270 | 2 1 43 4 -1. 271 | <_> 272 | 2 3 43 2 2. 273 | 0 274 | 6.3474893569946289e-002 275 | -6.4648061990737915e-001 276 | 8.2302427291870117e-001 277 | <_> 278 | 279 | <_> 280 | 281 | 282 | 283 | <_> 284 | 34 10 30 5 -1. 285 | <_> 286 | 44 10 10 5 3. 287 | 0 288 | 4.2217150330543518e-002 289 | -7.5190877914428711e-001 290 | 6.3705182075500488e-001 291 | <_> 292 | 293 | <_> 294 | 295 | 296 | 297 | <_> 298 | 0 9 9 5 -1. 299 | <_> 300 | 3 9 3 5 3. 301 | 0 302 | 2.0000640302896500e-002 303 | -6.2077498435974121e-001 304 | 6.1317932605743408e-001 305 | -1.6521669626235962e+000 306 | 2 307 | -1 308 | <_> 309 | 310 | 311 | <_> 312 | 313 | <_> 314 | 315 | 316 | 317 | <_> 318 | 2 1 43 6 -1. 319 | <_> 320 | 2 3 43 2 3. 321 | 0 322 | 9.2297486960887909e-002 323 | -7.2764229774475098e-001 324 | 8.0554759502410889e-001 325 | <_> 326 | 327 | <_> 328 | 329 | 330 | 331 | <_> 332 | 53 4 9 8 -1. 333 | <_> 334 | 56 4 3 8 3. 335 | 0 336 | 2.7613969519734383e-002 337 | -7.0769268274307251e-001 338 | 7.3315787315368652e-001 339 | <_> 340 | 341 | <_> 342 | 343 | 344 | 345 | <_> 346 | 36 4 14 8 -1. 347 | <_> 348 | 36 4 7 4 2. 349 | <_> 350 | 43 8 7 4 2. 351 | 0 352 | 1.2465449981391430e-002 353 | -8.4359270334243774e-001 354 | 5.7046437263488770e-001 355 | <_> 356 | 357 | <_> 358 | 359 | 360 | 361 | <_> 362 | 14 14 49 2 -1. 363 | <_> 364 | 14 15 49 1 2. 365 | 0 366 | -2.3886829614639282e-002 367 | 8.2656508684158325e-001 368 | -5.2783298492431641e-001 369 | -1.4523630142211914e+000 370 | 3 371 | -1 372 | <_> 373 | 374 | 375 | <_> 376 | 377 | <_> 378 | 379 | 380 | 381 | <_> 382 | 0 5 4 9 -1. 383 | <_> 384 | 2 5 2 9 2. 385 | 0 386 | 1.8821349367499352e-002 387 | -8.1122857332229614e-001 388 | 6.9127470254898071e-001 389 | <_> 390 | 391 | <_> 392 | 393 | 394 | 395 | <_> 396 | 21 1 38 4 -1. 397 | <_> 398 | 21 3 38 2 2. 399 | 0 400 | 6.1703320592641830e-002 401 | -7.6482647657394409e-001 402 | 6.4212161302566528e-001 403 | <_> 404 | 405 | <_> 406 | 407 | 408 | 409 | <_> 410 | 44 12 18 3 -1. 411 | <_> 412 | 53 12 9 3 2. 413 | 0 414 | -1.6298670321702957e-002 415 | 5.0207728147506714e-001 416 | -8.4020161628723145e-001 417 | <_> 418 | 419 | <_> 420 | 421 | 422 | 423 | <_> 424 | 10 4 9 3 -1. 425 | <_> 426 | 13 4 3 3 3. 427 | 0 428 | -4.9458951689302921e-003 429 | 6.1991941928863525e-001 430 | -6.1633539199829102e-001 431 | <_> 432 | 433 | <_> 434 | 435 | 436 | 437 | <_> 438 | 40 4 10 4 -1. 439 | <_> 440 | 45 4 5 4 2. 441 | 0 442 | -5.1894597709178925e-003 443 | 4.4975179433822632e-001 444 | -8.0651968717575073e-001 445 | <_> 446 | 447 | <_> 448 | 449 | 450 | 451 | <_> 452 | 17 14 47 2 -1. 453 | <_> 454 | 17 15 47 1 2. 455 | 0 456 | -1.8824130296707153e-002 457 | 6.1992841958999634e-001 458 | -5.5643159151077271e-001 459 | <_> 460 | 461 | <_> 462 | 463 | 464 | 465 | <_> 466 | 8 5 4 7 -1. 467 | <_> 468 | 10 5 2 7 2. 469 | 0 470 | 5.6571601890027523e-003 471 | -4.8346561193466187e-001 472 | 6.8647360801696777e-001 473 | -2.2358059883117676e+000 474 | 4 475 | -1 476 | <_> 477 | 478 | 479 | <_> 480 | 481 | <_> 482 | 483 | 484 | 485 | <_> 486 | 56 0 6 6 -1. 487 | <_> 488 | 56 0 3 3 2. 489 | <_> 490 | 59 3 3 3 2. 491 | 0 492 | -9.1503243893384933e-003 493 | 6.8174481391906738e-001 494 | -7.7866071462631226e-001 495 | <_> 496 | 497 | <_> 498 | 499 | 500 | 501 | <_> 502 | 0 0 6 6 -1. 503 | <_> 504 | 0 0 3 3 2. 505 | <_> 506 | 3 3 3 3 2. 507 | 0 508 | 7.4933180585503578e-003 509 | -6.8696027994155884e-001 510 | 6.6913938522338867e-001 511 | <_> 512 | 513 | <_> 514 | 515 | 516 | 517 | <_> 518 | 13 4 48 2 -1. 519 | <_> 520 | 29 4 16 2 3. 521 | 0 522 | 4.5296419411897659e-002 523 | -7.3576509952545166e-001 524 | 5.9453499317169189e-001 525 | <_> 526 | 527 | <_> 528 | 529 | 530 | 531 | <_> 532 | 42 1 6 15 -1. 533 | <_> 534 | 42 6 6 5 3. 535 | 0 536 | 1.1669679544866085e-002 537 | -8.4733831882476807e-001 538 | 4.5461329817771912e-001 539 | <_> 540 | 541 | <_> 542 | 543 | 544 | 545 | <_> 546 | 30 8 3 5 -1. 547 | <_> 548 | 31 8 1 5 3. 549 | 0 550 | 2.5769430212676525e-003 551 | -5.8270388841629028e-001 552 | 7.7900522947311401e-001 553 | <_> 554 | 555 | <_> 556 | 557 | 558 | 559 | <_> 560 | 55 10 8 6 -1. 561 | <_> 562 | 55 13 8 3 2. 563 | 0 564 | -1.4139170525595546e-003 565 | 4.5126929879188538e-001 566 | -9.0696328878402710e-001 567 | -1.8782069683074951e+000 568 | 5 569 | -1 570 | <_> 571 | 572 | 573 | <_> 574 | 575 | <_> 576 | 577 | 578 | 579 | <_> 580 | 4 6 4 7 -1. 581 | <_> 582 | 6 6 2 7 2. 583 | 0 584 | -5.3149578161537647e-003 585 | 6.5218788385391235e-001 586 | -7.9464268684387207e-001 587 | <_> 588 | 589 | <_> 590 | 591 | 592 | 593 | <_> 594 | 56 3 6 8 -1. 595 | <_> 596 | 59 3 3 8 2. 597 | 0 598 | -2.2906960919499397e-002 599 | 6.6433382034301758e-001 600 | -7.3633247613906860e-001 601 | <_> 602 | 603 | <_> 604 | 605 | 606 | 607 | <_> 608 | 37 2 4 6 -1. 609 | <_> 610 | 37 4 4 2 3. 611 | 0 612 | 9.4887977465987206e-003 613 | -8.2612031698226929e-001 614 | 4.9333500862121582e-001 615 | <_> 616 | 617 | <_> 618 | 619 | 620 | 621 | <_> 622 | 0 10 30 6 -1. 623 | <_> 624 | 0 12 30 2 3. 625 | 0 626 | 4.5138411223888397e-002 627 | -5.4704028367996216e-001 628 | 7.6927912235260010e-001 629 | <_> 630 | 631 | <_> 632 | 633 | 634 | 635 | <_> 636 | 0 4 21 12 -1. 637 | <_> 638 | 7 4 7 12 3. 639 | 0 640 | 2.5049019604921341e-002 641 | -8.6739641427993774e-001 642 | 5.2807968854904175e-001 643 | -1.0597369670867920e+000 644 | 6 645 | -1 646 | <_> 647 | 648 | 649 | <_> 650 | 651 | <_> 652 | 653 | 654 | 655 | <_> 656 | 44 0 1 14 -1. 657 | <_> 658 | 44 7 1 7 2. 659 | 0 660 | 6.6414438188076019e-003 661 | -7.7290147542953491e-001 662 | 6.9723731279373169e-001 663 | <_> 664 | 665 | <_> 666 | 667 | 668 | 669 | <_> 670 | 54 3 4 3 -1. 671 | <_> 672 | 56 3 2 3 2. 673 | 0 674 | 2.4703629314899445e-003 675 | -7.4289917945861816e-001 676 | 6.6825848817825317e-001 677 | <_> 678 | 679 | <_> 680 | 681 | 682 | 683 | <_> 684 | 32 0 30 6 -1. 685 | <_> 686 | 32 0 15 3 2. 687 | <_> 688 | 47 3 15 3 2. 689 | 0 690 | -2.2910499945282936e-002 691 | 4.3986389040946960e-001 692 | -9.0588808059692383e-001 693 | <_> 694 | 695 | <_> 696 | 697 | 698 | 699 | <_> 700 | 0 8 9 7 -1. 701 | <_> 702 | 3 8 3 7 3. 703 | 0 704 | 3.4193221479654312e-002 705 | -6.9507479667663574e-001 706 | 6.2501090764999390e-001 707 | <_> 708 | 709 | <_> 710 | 711 | 712 | 713 | <_> 714 | 30 10 3 3 -1. 715 | <_> 716 | 31 10 1 3 3. 717 | 0 718 | 1.5060020377859473e-003 719 | -6.8670761585235596e-001 720 | 8.2241541147232056e-001 721 | <_> 722 | 723 | <_> 724 | 725 | 726 | 727 | <_> 728 | 21 3 24 4 -1. 729 | <_> 730 | 29 3 8 4 3. 731 | 0 732 | 1.9838380467263050e-005 733 | -9.2727631330490112e-001 734 | 6.4723730087280273e-001 735 | <_> 736 | 737 | <_> 738 | 739 | 740 | 741 | <_> 742 | 42 3 12 6 -1. 743 | <_> 744 | 46 3 4 6 3. 745 | 0 746 | -2.2170299416757189e-005 747 | 5.6555831432342529e-001 748 | -9.6788132190704346e-001 749 | -1.4993519783020020e+000 750 | 7 751 | -1 752 | <_> 753 | 754 | 755 | <_> 756 | 757 | <_> 758 | 759 | 760 | 761 | <_> 762 | 56 9 6 6 -1. 763 | <_> 764 | 59 9 3 6 2. 765 | 0 766 | -1.1395259760320187e-002 767 | 7.1383631229400635e-001 768 | -8.7429678440093994e-001 769 | <_> 770 | 771 | <_> 772 | 773 | 774 | 775 | <_> 776 | 6 4 1 6 -1. 777 | <_> 778 | 6 7 1 3 2. 779 | 0 780 | -2.1864590235054493e-003 781 | 8.5311782360076904e-001 782 | -6.4777731895446777e-001 783 | <_> 784 | 785 | <_> 786 | 787 | 788 | 789 | <_> 790 | 0 0 12 4 -1. 791 | <_> 792 | 0 0 6 2 2. 793 | <_> 794 | 6 2 6 2 2. 795 | 0 796 | 2.3193720262497663e-003 797 | -7.6411879062652588e-001 798 | 7.1867972612380981e-001 799 | <_> 800 | 801 | <_> 802 | 803 | 804 | 805 | <_> 806 | 43 12 18 2 -1. 807 | <_> 808 | 52 12 9 2 2. 809 | 0 810 | -7.9916073009371758e-003 811 | 6.6442942619323730e-001 812 | -7.9540950059890747e-001 813 | <_> 814 | 815 | <_> 816 | 817 | 818 | 819 | <_> 820 | 9 5 2 8 -1. 821 | <_> 822 | 10 5 1 8 2. 823 | 0 824 | 1.4212740352377295e-003 825 | -6.3904231786727905e-001 826 | 7.5050598382949829e-001 827 | -8.4829801321029663e-001 828 | 8 829 | -1 830 | <_> 831 | 832 | 833 | <_> 834 | 835 | <_> 836 | 837 | 838 | 839 | <_> 840 | 1 9 6 3 -1. 841 | <_> 842 | 3 9 2 3 3. 843 | 0 844 | 6.4091659151017666e-003 845 | -8.8425230979919434e-001 846 | 9.9953681230545044e-001 847 | <_> 848 | 849 | <_> 850 | 851 | 852 | 853 | <_> 854 | 56 8 2 8 -1. 855 | <_> 856 | 56 12 2 4 2. 857 | 0 858 | -6.3316390151157975e-004 859 | 8.3822172880172729e-001 860 | -9.8322170972824097e-001 861 | <_> 862 | 863 | <_> 864 | 865 | 866 | 867 | <_> 868 | 24 2 6 13 -1. 869 | <_> 870 | 26 2 2 13 3. 871 | 0 872 | -6.4947169448714703e-005 873 | 1. 874 | -9.1822808980941772e-001 875 | <_> 876 | 877 | <_> 878 | 879 | 880 | 881 | <_> 882 | 33 7 24 4 -1. 883 | <_> 884 | 41 7 8 4 3. 885 | 0 886 | 5.3404141217470169e-003 887 | -9.4317251443862915e-001 888 | 9.0425151586532593e-001 889 | -6.0007210820913315e-002 890 | 9 891 | -1 892 | <_> 893 | 894 | 895 | <_> 896 | 897 | <_> 898 | 899 | 900 | 901 | <_> 902 | 1 1 57 4 -1. 903 | <_> 904 | 1 3 57 2 2. 905 | 0 906 | 1.0755469650030136e-001 907 | -7.1647202968597412e-001 908 | 8.7827038764953613e-001 909 | <_> 910 | 911 | <_> 912 | 913 | 914 | 915 | <_> 916 | 0 2 6 14 -1. 917 | <_> 918 | 3 2 3 14 2. 919 | 0 920 | 3.1668949872255325e-002 921 | -8.7051069736480713e-001 922 | 5.8807212114334106e-001 923 | <_> 924 | 925 | <_> 926 | 927 | 928 | 929 | <_> 930 | 52 3 6 10 -1. 931 | <_> 932 | 54 3 2 10 3. 933 | 0 934 | -1.0572380386292934e-002 935 | 6.2438100576400757e-001 936 | -7.4027371406555176e-001 937 | <_> 938 | 939 | <_> 940 | 941 | 942 | 943 | <_> 944 | 1 14 61 2 -1. 945 | <_> 946 | 1 15 61 1 2. 947 | 0 948 | -2.7396259829401970e-002 949 | 8.9776748418807983e-001 950 | -5.2986758947372437e-001 951 | <_> 952 | 953 | <_> 954 | 955 | 956 | 957 | <_> 958 | 28 0 11 12 -1. 959 | <_> 960 | 28 4 11 4 3. 961 | 0 962 | 2.5918649509549141e-002 963 | -8.6482518911361694e-001 964 | 5.3121817111968994e-001 965 | -9.6125108003616333e-001 966 | 10 967 | -1 968 | <_> 969 | 970 | 971 | <_> 972 | 973 | <_> 974 | 975 | 976 | 977 | <_> 978 | 22 1 41 4 -1. 979 | <_> 980 | 22 3 41 2 2. 981 | 0 982 | 7.1039132773876190e-002 983 | -7.5719678401947021e-001 984 | 7.5645631551742554e-001 985 | <_> 986 | 987 | <_> 988 | 989 | 990 | 991 | <_> 992 | 41 6 6 8 -1. 993 | <_> 994 | 43 6 2 8 3. 995 | 0 996 | 7.6241148635745049e-003 997 | -7.9783838987350464e-001 998 | 7.1733069419860840e-001 999 | <_> 1000 | 1001 | <_> 1002 | 1003 | 1004 | 1005 | <_> 1006 | 50 9 14 5 -1. 1007 | <_> 1008 | 57 9 7 5 2. 1009 | 0 1010 | -2.7092639356851578e-002 1011 | 6.0071170330047607e-001 1012 | -8.4794402122497559e-001 1013 | <_> 1014 | 1015 | <_> 1016 | 1017 | 1018 | 1019 | <_> 1020 | 4 1 12 5 -1. 1021 | <_> 1022 | 10 1 6 5 2. 1023 | 0 1024 | -8.1267888890579343e-004 1025 | 5.9364068508148193e-001 1026 | -8.9295238256454468e-001 1027 | <_> 1028 | 1029 | <_> 1030 | 1031 | 1032 | 1033 | <_> 1034 | 37 9 3 3 -1. 1035 | <_> 1036 | 38 9 1 3 3. 1037 | 0 1038 | 8.3705072756856680e-004 1039 | -6.4887362718582153e-001 1040 | 7.8537952899932861e-001 1041 | -1.0618970394134521e+000 1042 | 11 1043 | -1 1044 | <_> 1045 | 1046 | 1047 | <_> 1048 | 1049 | <_> 1050 | 1051 | 1052 | 1053 | <_> 1054 | 54 0 10 6 -1. 1055 | <_> 1056 | 54 0 5 3 2. 1057 | <_> 1058 | 59 3 5 3 2. 1059 | 0 1060 | -9.7556859254837036e-003 1061 | 7.6982218027114868e-001 1062 | -8.5293501615524292e-001 1063 | <_> 1064 | 1065 | <_> 1066 | 1067 | 1068 | 1069 | <_> 1070 | 47 0 6 11 -1. 1071 | <_> 1072 | 49 0 2 11 3. 1073 | 0 1074 | -8.6617246270179749e-003 1075 | 8.4029090404510498e-001 1076 | -7.1949690580368042e-001 1077 | <_> 1078 | 1079 | <_> 1080 | 1081 | 1082 | 1083 | <_> 1084 | 19 2 20 2 -1. 1085 | <_> 1086 | 19 3 20 1 2. 1087 | 0 1088 | 1.6897840425372124e-002 1089 | -5.3601992130279541e-001 1090 | 9.5484441518783569e-001 1091 | <_> 1092 | 1093 | <_> 1094 | 1095 | 1096 | 1097 | <_> 1098 | 14 4 6 11 -1. 1099 | <_> 1100 | 17 4 3 11 2. 1101 | 0 1102 | 4.7526158596156165e-005 1103 | -7.6412862539291382e-001 1104 | 7.5398761034011841e-001 1105 | <_> 1106 | 1107 | <_> 1108 | 1109 | 1110 | 1111 | <_> 1112 | 31 9 33 2 -1. 1113 | <_> 1114 | 42 9 11 2 3. 1115 | 0 1116 | 6.5607670694589615e-003 1117 | -9.9346441030502319e-001 1118 | 6.4864277839660645e-001 1119 | -7.3307347297668457e-001 1120 | 12 1121 | -1 1122 | <_> 1123 | 1124 | 1125 | <_> 1126 | 1127 | <_> 1128 | 1129 | 1130 | 1131 | <_> 1132 | 6 1 53 6 -1. 1133 | <_> 1134 | 6 3 53 2 3. 1135 | 0 1136 | 1.0103269666433334e-001 1137 | -7.3275578022003174e-001 1138 | 8.4619927406311035e-001 1139 | <_> 1140 | 1141 | <_> 1142 | 1143 | 1144 | 1145 | <_> 1146 | 49 9 4 6 -1. 1147 | <_> 1148 | 49 9 2 3 2. 1149 | <_> 1150 | 51 12 2 3 2. 1151 | 0 1152 | -2.8920811018906534e-004 1153 | 7.1564781665802002e-001 1154 | -8.8221758604049683e-001 1155 | <_> 1156 | 1157 | <_> 1158 | 1159 | 1160 | 1161 | <_> 1162 | 0 9 30 7 -1. 1163 | <_> 1164 | 10 9 10 7 3. 1165 | 0 1166 | 1.0838840156793594e-002 1167 | -8.7420248985290527e-001 1168 | 6.0648679733276367e-001 1169 | <_> 1170 | 1171 | <_> 1172 | 1173 | 1174 | 1175 | <_> 1176 | 40 4 6 2 -1. 1177 | <_> 1178 | 42 4 2 2 3. 1179 | 0 1180 | 5.0803890917450190e-004 1181 | -9.0554022789001465e-001 1182 | 6.4213967323303223e-001 1183 | <_> 1184 | 1185 | <_> 1186 | 1187 | 1188 | 1189 | <_> 1190 | 1 9 6 1 -1. 1191 | <_> 1192 | 3 9 2 1 3. 1193 | 0 1194 | 2.3357039317488670e-003 1195 | -9.2574918270111084e-001 1196 | 8.6384928226470947e-001 1197 | <_> 1198 | 1199 | <_> 1200 | 1201 | 1202 | 1203 | <_> 1204 | 47 3 4 10 -1. 1205 | <_> 1206 | 47 8 4 5 2. 1207 | 0 1208 | 8.0239427916239947e-005 1209 | -9.9618428945541382e-001 1210 | 9.5355111360549927e-001 1211 | <_> 1212 | 1213 | <_> 1214 | 1215 | 1216 | 1217 | <_> 1218 | 31 5 30 11 -1. 1219 | <_> 1220 | 41 5 10 11 3. 1221 | 0 1222 | 3.2030208967626095e-003 1223 | -1. 1224 | 1.0001050233840942e+000 1225 | <_> 1226 | 1227 | <_> 1228 | 1229 | 1230 | 1231 | <_> 1232 | 0 0 2 1 -1. 1233 | <_> 1234 | 1 0 1 1 2. 1235 | 0 1236 | 0. 1237 | 0. 1238 | -1. 1239 | <_> 1240 | 1241 | <_> 1242 | 1243 | 1244 | 1245 | <_> 1246 | 21 3 42 5 -1. 1247 | <_> 1248 | 35 3 14 5 3. 1249 | 0 1250 | 2.6143440045416355e-003 1251 | -1. 1252 | 1.0002139806747437e+000 1253 | <_> 1254 | 1255 | <_> 1256 | 1257 | 1258 | 1259 | <_> 1260 | 0 0 2 1 -1. 1261 | <_> 1262 | 1 0 1 1 2. 1263 | 0 1264 | 0. 1265 | 0. 1266 | -1. 1267 | <_> 1268 | 1269 | <_> 1270 | 1271 | 1272 | 1273 | <_> 1274 | 8 5 30 9 -1. 1275 | <_> 1276 | 8 8 30 3 3. 1277 | 0 1278 | -7.0475979009643197e-004 1279 | 1. 1280 | -9.9976968765258789e-001 1281 | <_> 1282 | 1283 | <_> 1284 | 1285 | 1286 | 1287 | <_> 1288 | 3 12 33 3 -1. 1289 | <_> 1290 | 14 12 11 3 3. 1291 | 0 1292 | 2.1271279547363520e-003 1293 | -9.9694627523422241e-001 1294 | 1.0002720355987549e+000 1295 | <_> 1296 | 1297 | <_> 1298 | 1299 | 1300 | 1301 | <_> 1302 | 0 0 3 2 -1. 1303 | <_> 1304 | 1 0 1 2 3. 1305 | 0 1306 | -2.4224430671893060e-004 1307 | 1. 1308 | -1. 1309 | <_> 1310 | 1311 | <_> 1312 | 1313 | 1314 | 1315 | <_> 1316 | 46 4 3 8 -1. 1317 | <_> 1318 | 47 4 1 8 3. 1319 | 0 1320 | 7.4700301047414541e-004 1321 | -9.9108231067657471e-001 1322 | 9.9941182136535645e-001 1323 | -1.0991690158843994e+000 1324 | 13 1325 | -1 1326 | <_> 1327 | 1328 | 1329 | <_> 1330 | 1331 | <_> 1332 | 1333 | 1334 | 1335 | <_> 1336 | 1 2 6 5 -1. 1337 | <_> 1338 | 3 2 2 5 3. 1339 | 0 1340 | 1.7227890202775598e-003 1341 | -9.3608891963958740e-001 1342 | 8.7251222133636475e-001 1343 | <_> 1344 | 1345 | <_> 1346 | 1347 | 1348 | 1349 | <_> 1350 | 0 3 18 5 -1. 1351 | <_> 1352 | 6 3 6 5 3. 1353 | 0 1354 | 2.7599320746958256e-003 1355 | -9.9757021665573120e-001 1356 | 1.0000289678573608e+000 1357 | <_> 1358 | 1359 | <_> 1360 | 1361 | 1362 | 1363 | <_> 1364 | 3 1 6 14 -1. 1365 | <_> 1366 | 6 1 3 14 2. 1367 | 0 1368 | -8.9444358309265226e-005 1369 | 1. 1370 | -9.9264812469482422e-001 1371 | <_> 1372 | 1373 | <_> 1374 | 1375 | 1376 | 1377 | <_> 1378 | 3 6 2 10 -1. 1379 | <_> 1380 | 3 11 2 5 2. 1381 | 0 1382 | -2.7962020249105990e-004 1383 | 8.2833290100097656e-001 1384 | -9.8444151878356934e-001 1385 | <_> 1386 | 1387 | <_> 1388 | 1389 | 1390 | 1391 | <_> 1392 | 42 0 4 6 -1. 1393 | <_> 1394 | 42 0 2 3 2. 1395 | <_> 1396 | 44 3 2 3 2. 1397 | 0 1398 | -2.7560539820115082e-005 1399 | 1. 1400 | -9.9543339014053345e-001 1401 | -9.1314977407455444e-001 1402 | 14 1403 | -1 1404 | 1405 | -------------------------------------------------------------------------------- /Intermediate/Custom Object Detection/haarcascades/haarcascade_russian_plate_number.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | BOOST 5 | HAAR 6 | 20 7 | 60 8 | 9 | GAB 10 | 9.9500000476837158e-001 11 | 5.0000000000000000e-001 12 | 9.4999999999999996e-001 13 | 1 14 | 100 15 | 16 | 0 17 | 1 18 | ALL 19 | 20 20 | 21 | 22 | <_> 23 | 6 24 | -1.3110191822052002e+000 25 | 26 | <_> 27 | 28 | 0 -1 193 1.0079263709485531e-002 29 | 30 | -8.1339186429977417e-001 5.0277775526046753e-001 31 | <_> 32 | 33 | 0 -1 94 -2.2060684859752655e-002 34 | 35 | 7.9418992996215820e-001 -5.0896102190017700e-001 36 | <_> 37 | 38 | 0 -1 18 -4.8777908086776733e-002 39 | 40 | 7.1656656265258789e-001 -4.1640335321426392e-001 41 | <_> 42 | 43 | 0 -1 35 1.0387318208813667e-002 44 | 45 | 3.7618312239646912e-001 -8.5504144430160522e-001 46 | <_> 47 | 48 | 0 -1 191 -9.4083719886839390e-004 49 | 50 | 4.2658549547195435e-001 -5.7729166746139526e-001 51 | <_> 52 | 53 | 0 -1 48 -8.2391249015927315e-003 54 | 55 | 8.2346975803375244e-001 -3.7503159046173096e-001 56 | 57 | <_> 58 | 6 59 | -1.1759783029556274e+000 60 | 61 | <_> 62 | 63 | 0 -1 21 1.7386786639690399e-001 64 | 65 | -6.8139964342117310e-001 6.0767590999603271e-001 66 | <_> 67 | 68 | 0 -1 28 -1.9797295331954956e-002 69 | 70 | 7.8072130680084229e-001 -4.4399836659431458e-001 71 | <_> 72 | 73 | 0 -1 46 -1.0154811898246408e-003 74 | 75 | 3.3383268117904663e-001 -7.6357340812683105e-001 76 | <_> 77 | 78 | 0 -1 138 2.4954911321401596e-002 79 | 80 | -3.9979115128517151e-001 6.8620890378952026e-001 81 | <_> 82 | 83 | 0 -1 25 2.8837744612246752e-003 84 | 85 | -2.7928480505943298e-001 7.9980146884918213e-001 86 | <_> 87 | 88 | 0 -1 26 -3.8839362561702728e-002 89 | 90 | -7.8442335128784180e-001 3.4929576516151428e-001 91 | 92 | <_> 93 | 6 94 | -1.7856997251510620e+000 95 | 96 | <_> 97 | 98 | 0 -1 34 2.7977079153060913e-002 99 | 100 | -5.8424139022827148e-001 6.6850829124450684e-001 101 | <_> 102 | 103 | 0 -1 171 1.9148588180541992e-002 104 | 105 | -6.5457659959793091e-001 4.0804430842399597e-001 106 | <_> 107 | 108 | 0 -1 7 1.1955041438341141e-002 109 | 110 | -4.2002618312835693e-001 5.6217432022094727e-001 111 | <_> 112 | 113 | 0 -1 45 -2.1218564361333847e-002 114 | 115 | 7.1812576055526733e-001 -3.0354043841362000e-001 116 | <_> 117 | 118 | 0 -1 108 2.0117280655540526e-004 119 | 120 | -6.1749500036239624e-001 3.5549193620681763e-001 121 | <_> 122 | 123 | 0 -1 122 3.9725980604998767e-004 124 | 125 | -2.6844096183776855e-001 7.6771658658981323e-001 126 | 127 | <_> 128 | 9 129 | -1.1837021112442017e+000 130 | 131 | <_> 132 | 133 | 0 -1 202 -1.3291766867041588e-002 134 | 135 | 4.5248869061470032e-001 -5.8849954605102539e-001 136 | <_> 137 | 138 | 0 -1 79 -4.8353265970945358e-002 139 | 140 | 7.0951640605926514e-001 -3.2546108961105347e-001 141 | <_> 142 | 143 | 0 -1 22 2.6532993651926517e-003 144 | 145 | -2.5343564152717590e-001 7.6588714122772217e-001 146 | <_> 147 | 148 | 0 -1 66 -3.8548894226551056e-002 149 | 150 | 5.8126109838485718e-001 -3.0813106894493103e-001 151 | <_> 152 | 153 | 0 -1 41 -6.8602780811488628e-004 154 | 155 | 2.6361095905303955e-001 -7.2226840257644653e-001 156 | <_> 157 | 158 | 0 -1 69 -2.5726919993758202e-002 159 | 160 | -8.7153857946395874e-001 1.9438524544239044e-001 161 | <_> 162 | 163 | 0 -1 24 8.4192806389182806e-004 164 | 165 | -3.6150649189949036e-001 5.2065432071685791e-001 166 | <_> 167 | 168 | 0 -1 62 -2.6956878136843443e-003 169 | 170 | 5.9945529699325562e-001 -2.8344830870628357e-001 171 | <_> 172 | 173 | 0 -1 112 3.0572075396776199e-002 174 | 175 | -3.0688971281051636e-001 5.7261526584625244e-001 176 | 177 | <_> 178 | 8 179 | -1.4687808752059937e+000 180 | 181 | <_> 182 | 183 | 0 -1 5 3.1486168503761292e-002 184 | 185 | -5.7836848497390747e-001 3.7931033968925476e-001 186 | <_> 187 | 188 | 0 -1 150 2.8311354108154774e-003 189 | 190 | -5.7888329029083252e-001 3.2841828465461731e-001 191 | <_> 192 | 193 | 0 -1 76 -4.2060948908329010e-002 194 | 195 | 5.5578106641769409e-001 -3.2662427425384521e-001 196 | <_> 197 | 198 | 0 -1 115 6.2936875037848949e-003 199 | 200 | -2.1032968163490295e-001 7.8646916151046753e-001 201 | <_> 202 | 203 | 0 -1 51 7.0570126175880432e-002 204 | 205 | -4.3683132529258728e-001 4.0298295021057129e-001 206 | <_> 207 | 208 | 0 -1 135 2.5173835456371307e-003 209 | 210 | -2.0461565256118774e-001 8.2858163118362427e-001 211 | <_> 212 | 213 | 0 -1 102 1.5648975968360901e-003 214 | 215 | -2.4848082661628723e-001 6.0209411382675171e-001 216 | <_> 217 | 218 | 0 -1 177 -3.5970686003565788e-003 219 | 220 | 2.3294737935066223e-001 -6.5612471103668213e-001 221 | 222 | <_> 223 | 9 224 | -1.1029583215713501e+000 225 | 226 | <_> 227 | 228 | 0 -1 27 -1.1257569491863251e-001 229 | 230 | 3.3181819319725037e-001 -5.3901344537734985e-001 231 | <_> 232 | 233 | 0 -1 142 3.8014666642993689e-003 234 | 235 | -3.6430206894874573e-001 4.5984184741973877e-001 236 | <_> 237 | 238 | 0 -1 57 9.8789634648710489e-004 239 | 240 | -2.6661416888237000e-001 5.6971323490142822e-001 241 | <_> 242 | 243 | 0 -1 55 2.1719809621572495e-002 244 | 245 | 1.8432702124118805e-001 -8.2999354600906372e-001 246 | <_> 247 | 248 | 0 -1 111 5.1051773130893707e-002 249 | 250 | 1.4391148090362549e-001 -9.4541704654693604e-001 251 | <_> 252 | 253 | 0 -1 164 1.8956036074087024e-003 254 | 255 | -6.0830104351043701e-001 2.6091885566711426e-001 256 | <_> 257 | 258 | 0 -1 81 -5.8700828813016415e-003 259 | 260 | 6.9104760885238647e-001 -2.6916843652725220e-001 261 | <_> 262 | 263 | 0 -1 116 -1.1522199492901564e-003 264 | 265 | -6.9503885507583618e-001 2.4749211966991425e-001 266 | <_> 267 | 268 | 0 -1 90 -5.1933946087956429e-003 269 | 270 | 5.8551025390625000e-001 -3.0389472842216492e-001 271 | 272 | <_> 273 | 9 274 | -9.0274518728256226e-001 275 | 276 | <_> 277 | 278 | 0 -1 205 -1.4383997768163681e-002 279 | 280 | 4.5400592684745789e-001 -4.9917897582054138e-001 281 | <_> 282 | 283 | 0 -1 114 -3.3369414508342743e-002 284 | 285 | -9.3247985839843750e-001 1.4586758613586426e-001 286 | <_> 287 | 288 | 0 -1 128 5.2380945999175310e-004 289 | 290 | -2.8349643945693970e-001 6.4983856678009033e-001 291 | <_> 292 | 293 | 0 -1 143 6.1231426661834121e-004 294 | 295 | -1.8502233922481537e-001 6.5052211284637451e-001 296 | <_> 297 | 298 | 0 -1 49 1.7017847858369350e-003 299 | 300 | 2.2008989751338959e-001 -7.2277534008026123e-001 301 | <_> 302 | 303 | 0 -1 133 2.6139442343264818e-003 304 | 305 | 1.8238025903701782e-001 -7.6262325048446655e-001 306 | <_> 307 | 308 | 0 -1 43 -2.0020073279738426e-003 309 | 310 | 5.6799399852752686e-001 -2.8219676017761230e-001 311 | <_> 312 | 313 | 0 -1 119 1.9273828947916627e-003 314 | 315 | -2.0913636684417725e-001 7.9203850030899048e-001 316 | <_> 317 | 318 | 0 -1 134 -9.4476283993571997e-004 319 | 320 | -8.2361942529678345e-001 2.4256958067417145e-001 321 | 322 | <_> 323 | 10 324 | -1.4518526792526245e+000 325 | 326 | <_> 327 | 328 | 0 -1 162 1.6756314784288406e-002 329 | 330 | -6.9359332323074341e-001 5.1373954862356186e-002 331 | <_> 332 | 333 | 0 -1 16 2.4082964286208153e-002 334 | 335 | -3.3989402651786804e-001 4.5332714915275574e-001 336 | <_> 337 | 338 | 0 -1 186 1.2284796684980392e-003 339 | 340 | -2.2297365963459015e-001 6.1439812183380127e-001 341 | <_> 342 | 343 | 0 -1 59 -1.4379122294485569e-003 344 | 345 | -6.9444245100021362e-001 2.0446482300758362e-001 346 | <_> 347 | 348 | 0 -1 185 -1.8713285680860281e-003 349 | 350 | 6.7942184209823608e-001 -2.7580419182777405e-001 351 | <_> 352 | 353 | 0 -1 190 -4.7389674000442028e-003 354 | 355 | -7.0437240600585938e-001 2.6915156841278076e-001 356 | <_> 357 | 358 | 0 -1 156 7.4071279959753156e-004 359 | 360 | -2.9220902919769287e-001 5.3538239002227783e-001 361 | <_> 362 | 363 | 0 -1 11 -2.2739455103874207e-001 364 | 365 | 6.6916191577911377e-001 -2.1987228095531464e-001 366 | <_> 367 | 368 | 0 -1 155 -1.0255509987473488e-003 369 | 370 | 6.3346290588378906e-001 -2.2717863321304321e-001 371 | <_> 372 | 373 | 0 -1 167 2.4775355122983456e-003 374 | 375 | -5.4297816753387451e-001 3.1877547502517700e-001 376 | 377 | <_> 378 | 11 379 | -1.3153649568557739e+000 380 | 381 | <_> 382 | 383 | 0 -1 6 1.9131936132907867e-002 384 | 385 | -6.0168600082397461e-001 1.9141913950443268e-001 386 | <_> 387 | 388 | 0 -1 42 -4.5855185016989708e-003 389 | 390 | 2.1901632845401764e-001 -5.7136750221252441e-001 391 | <_> 392 | 393 | 0 -1 53 -1.9026801455765963e-003 394 | 395 | -8.0075079202651978e-001 1.6502076387405396e-001 396 | <_> 397 | 398 | 0 -1 19 -3.2767035067081451e-002 399 | 400 | 5.1496404409408569e-001 -2.5474679470062256e-001 401 | <_> 402 | 403 | 0 -1 129 6.3941581174731255e-004 404 | 405 | -1.9851709902286530e-001 6.7218667268753052e-001 406 | <_> 407 | 408 | 0 -1 201 1.5573646873235703e-002 409 | 410 | -1.7564551532268524e-001 7.0536541938781738e-001 411 | <_> 412 | 413 | 0 -1 200 9.5508026424795389e-004 414 | 415 | -1.9691802561283112e-001 6.1125624179840088e-001 416 | <_> 417 | 418 | 0 -1 67 9.0427603572607040e-003 419 | 420 | 1.6518253087997437e-001 -8.7012130022048950e-001 421 | <_> 422 | 423 | 0 -1 77 8.1576988101005554e-002 424 | 425 | 1.4075902104377747e-001 -8.4871828556060791e-001 426 | <_> 427 | 428 | 0 -1 166 -5.1994959358125925e-004 429 | 430 | 2.1803210675716400e-001 -5.4628211259841919e-001 431 | <_> 432 | 433 | 0 -1 70 -2.3009868338704109e-002 434 | 435 | -7.9586231708526611e-001 1.5989699959754944e-001 436 | 437 | <_> 438 | 13 439 | -1.4625015258789063e+000 440 | 441 | <_> 442 | 443 | 0 -1 1 2.6759501546621323e-002 444 | 445 | -6.0482984781265259e-001 1.4906832575798035e-001 446 | <_> 447 | 448 | 0 -1 165 3.0343931168317795e-002 449 | 450 | -4.7357541322708130e-001 2.6279065012931824e-001 451 | <_> 452 | 453 | 0 -1 161 1.2678599450737238e-003 454 | 455 | -1.9493983685970306e-001 6.9734728336334229e-001 456 | <_> 457 | 458 | 0 -1 30 1.8607920501381159e-003 459 | 460 | 1.5611934661865234e-001 -9.0542370080947876e-001 461 | <_> 462 | 463 | 0 -1 157 -1.3872641138732433e-003 464 | 465 | 5.3263407945632935e-001 -3.0192303657531738e-001 466 | <_> 467 | 468 | 0 -1 180 -6.9969398900866508e-003 469 | 470 | -9.4549953937530518e-001 1.5575224161148071e-001 471 | <_> 472 | 473 | 0 -1 158 1.1245720088481903e-003 474 | 475 | -2.6688691973686218e-001 5.5608308315277100e-001 476 | <_> 477 | 478 | 0 -1 160 -2.8279949910938740e-003 479 | 480 | -9.1861122846603394e-001 1.3309663534164429e-001 481 | <_> 482 | 483 | 0 -1 58 7.1019242750480771e-004 484 | 485 | -3.0977895855903625e-001 4.3846300244331360e-001 486 | <_> 487 | 488 | 0 -1 8 -4.1933014988899231e-002 489 | 490 | -8.9102542400360107e-001 1.5866196155548096e-001 491 | <_> 492 | 493 | 0 -1 87 1.6568358987569809e-002 494 | 495 | 1.2731756269931793e-001 -8.5553413629531860e-001 496 | <_> 497 | 498 | 0 -1 64 2.0309074316173792e-003 499 | 500 | -2.3260365426540375e-001 6.7330485582351685e-001 501 | <_> 502 | 503 | 0 -1 159 -1.7069760942831635e-003 504 | 505 | -7.1925789117813110e-001 1.9108834862709045e-001 506 | 507 | <_> 508 | 14 509 | -1.4959813356399536e+000 510 | 511 | <_> 512 | 513 | 0 -1 4 1.4695923775434494e-002 514 | 515 | -6.2167906761169434e-001 2.1172638237476349e-001 516 | <_> 517 | 518 | 0 -1 50 -1.6501215286552906e-003 519 | 520 | 1.9353884458541870e-001 -5.7780367136001587e-001 521 | <_> 522 | 523 | 0 -1 123 7.0121872704476118e-004 524 | 525 | -2.2979106009006500e-001 5.3033334016799927e-001 526 | <_> 527 | 528 | 0 -1 52 9.4158272258937359e-004 529 | 530 | 1.6849038004875183e-001 -7.4897718429565430e-001 531 | <_> 532 | 533 | 0 -1 124 -2.0684124901890755e-003 534 | 535 | 6.7936712503433228e-001 -1.9317412376403809e-001 536 | <_> 537 | 538 | 0 -1 23 -1.8305826233699918e-004 539 | 540 | -7.0275229215621948e-001 1.7971208691596985e-001 541 | <_> 542 | 543 | 0 -1 198 5.5587477982044220e-004 544 | 545 | -2.4448128044605255e-001 5.0703984498977661e-001 546 | <_> 547 | 548 | 0 -1 152 4.3448276119306684e-004 549 | 550 | 1.3497908413410187e-001 -8.5621362924575806e-001 551 | <_> 552 | 553 | 0 -1 197 -1.2359691318124533e-003 554 | 555 | 6.1710417270660400e-001 -2.2301279008388519e-001 556 | <_> 557 | 558 | 0 -1 153 -6.9627340417355299e-004 559 | 560 | -6.4706987142562866e-001 2.3951497673988342e-001 561 | <_> 562 | 563 | 0 -1 175 1.0683680884540081e-003 564 | 565 | -2.8343605995178223e-001 4.9318629503250122e-001 566 | <_> 567 | 568 | 0 -1 168 1.7104238213505596e-004 569 | 570 | -2.7171039581298828e-001 4.2520308494567871e-001 571 | <_> 572 | 573 | 0 -1 144 8.2368971779942513e-003 574 | 575 | 1.6359315812587738e-001 -7.3864609003067017e-001 576 | <_> 577 | 578 | 0 -1 131 -5.9884190559387207e-003 579 | 580 | 3.8030940294265747e-001 -3.0763563513755798e-001 581 | 582 | <_> 583 | 9 584 | -1.1183819770812988e+000 585 | 586 | <_> 587 | 588 | 0 -1 187 -1.4863962307572365e-002 589 | 590 | 1.1989101022481918e-001 -6.6138857603073120e-001 591 | <_> 592 | 593 | 0 -1 117 2.4736612103879452e-003 594 | 595 | -5.2778661251068115e-001 2.3012125492095947e-001 596 | <_> 597 | 598 | 0 -1 71 -4.8899287357926369e-003 599 | 600 | 6.0186779499053955e-001 -2.0681641995906830e-001 601 | <_> 602 | 603 | 0 -1 174 1.5796069055795670e-002 604 | 605 | 1.4610521495342255e-001 -8.2099527120590210e-001 606 | <_> 607 | 608 | 0 -1 104 5.9720675926655531e-004 609 | 610 | -2.3587301373481750e-001 4.8323699831962585e-001 611 | <_> 612 | 613 | 0 -1 103 -1.9448818638920784e-003 614 | 615 | 6.4417767524719238e-001 -2.0953170955181122e-001 616 | <_> 617 | 618 | 0 -1 154 1.9433414854574949e-004 619 | 620 | 2.0600238442420959e-001 -7.2418999671936035e-001 621 | <_> 622 | 623 | 0 -1 163 -1.5097535215318203e-002 624 | 625 | -8.7151485681533813e-001 1.2594890594482422e-001 626 | <_> 627 | 628 | 0 -1 82 -3.9843879640102386e-003 629 | 630 | 4.3801131844520569e-001 -2.9676589369773865e-001 631 | 632 | <_> 633 | 12 634 | -1.5434337854385376e+000 635 | 636 | <_> 637 | 638 | 0 -1 105 1.1273270938545465e-003 639 | 640 | -4.7976878285408020e-001 3.6627906560897827e-001 641 | <_> 642 | 643 | 0 -1 95 9.7806821577250957e-004 644 | 645 | -2.7689707279205322e-001 5.1295894384384155e-001 646 | <_> 647 | 648 | 0 -1 15 1.6528377309441566e-002 649 | 650 | -4.5259797573089600e-001 2.4290211498737335e-001 651 | <_> 652 | 653 | 0 -1 137 1.1040373938158154e-003 654 | 655 | -3.2714816927909851e-001 3.4566244482994080e-001 656 | <_> 657 | 658 | 0 -1 109 -1.7780361231416464e-003 659 | 660 | -6.9511681795120239e-001 1.8829824030399323e-001 661 | <_> 662 | 663 | 0 -1 92 4.6280334936454892e-004 664 | 665 | -2.3864887654781342e-001 5.3136289119720459e-001 666 | <_> 667 | 668 | 0 -1 100 -1.4975425438024104e-004 669 | 670 | -6.6509884595870972e-001 2.1483559906482697e-001 671 | <_> 672 | 673 | 0 -1 83 -1.4625370968133211e-003 674 | 675 | 2.6556470990180969e-001 -4.9002227187156677e-001 676 | <_> 677 | 678 | 0 -1 14 -2.6019819779321551e-004 679 | 680 | -7.0160359144210815e-001 1.6359129548072815e-001 681 | <_> 682 | 683 | 0 -1 14 2.2371641534846276e-004 684 | 685 | 1.2919521331787109e-001 -6.9767206907272339e-001 686 | <_> 687 | 688 | 0 -1 194 -1.0447315871715546e-002 689 | 690 | 2.1837629377841949e-001 -4.6482038497924805e-001 691 | <_> 692 | 693 | 0 -1 20 -9.2897024005651474e-003 694 | 695 | 6.4918082952499390e-001 -2.0495061576366425e-001 696 | 697 | <_> 698 | 12 699 | -1.4440233707427979e+000 700 | 701 | <_> 702 | 703 | 0 -1 9 8.5356216877698898e-003 704 | 705 | -5.3151458501815796e-001 2.2357723116874695e-001 706 | <_> 707 | 708 | 0 -1 182 1.5294685726985335e-003 709 | 710 | -6.0895460844039917e-001 1.7429886758327484e-001 711 | <_> 712 | 713 | 0 -1 40 1.8610086990520358e-003 714 | 715 | -2.5480428338050842e-001 4.2150071263313293e-001 716 | <_> 717 | 718 | 0 -1 176 1.5735558699816465e-003 719 | 720 | -1.6832062602043152e-001 4.8567819595336914e-001 721 | <_> 722 | 723 | 0 -1 179 -6.7992787808179855e-004 724 | 725 | 3.9894598722457886e-001 -3.0744269490242004e-001 726 | <_> 727 | 728 | 0 -1 151 4.9857296049594879e-002 729 | 730 | -1.5370152890682220e-001 6.7523348331451416e-001 731 | <_> 732 | 733 | 0 -1 139 -2.8339058160781860e-002 734 | 735 | 5.0540882349014282e-001 -2.9473617672920227e-001 736 | <_> 737 | 738 | 0 -1 72 -7.7956825494766235e-002 739 | 740 | 4.0387043356895447e-001 -3.0287107825279236e-001 741 | <_> 742 | 743 | 0 -1 89 -3.6115488037467003e-003 744 | 745 | 6.3856112957000732e-001 -1.6917882859706879e-001 746 | <_> 747 | 748 | 0 -1 207 3.3940275898203254e-004 749 | 750 | 1.3713537156581879e-001 -7.8120291233062744e-001 751 | <_> 752 | 753 | 0 -1 39 4.0043061599135399e-003 754 | 755 | 1.5233094990253448e-001 -6.3939732313156128e-001 756 | <_> 757 | 758 | 0 -1 65 -4.4601649278774858e-004 759 | 760 | 2.1333815157413483e-001 -4.7728902101516724e-001 761 | 762 | <_> 763 | 13 764 | -1.2532578706741333e+000 765 | 766 | <_> 767 | 768 | 0 -1 204 -2.0341124385595322e-002 769 | 770 | 2.4170616269111633e-001 -4.9161517620086670e-001 771 | <_> 772 | 773 | 0 -1 169 8.9040049351751804e-004 774 | 775 | -2.8570893406867981e-001 4.2666998505592346e-001 776 | <_> 777 | 778 | 0 -1 60 -3.3259526826441288e-003 779 | 780 | 4.2626520991325378e-001 -2.3811897635459900e-001 781 | <_> 782 | 783 | 0 -1 38 -3.1714607030153275e-002 784 | 785 | -8.5494768619537354e-001 1.1712870001792908e-001 786 | <_> 787 | 788 | 0 -1 31 -1.1553820222616196e-002 789 | 790 | 2.2675493359565735e-001 -4.9640509486198425e-001 791 | <_> 792 | 793 | 0 -1 80 -6.7727260291576385e-002 794 | 795 | -8.6705064773559570e-001 9.8765812814235687e-002 796 | <_> 797 | 798 | 0 -1 63 -3.1611192971467972e-003 799 | 800 | 3.9449846744537354e-001 -2.8210711479187012e-001 801 | <_> 802 | 803 | 0 -1 149 4.3221906526014209e-004 804 | 805 | 1.1805476248264313e-001 -9.0178310871124268e-001 806 | <_> 807 | 808 | 0 -1 188 -2.2296360111795366e-004 809 | 810 | 1.7324598133563995e-001 -5.2877873182296753e-001 811 | <_> 812 | 813 | 0 -1 120 -2.1440195851027966e-003 814 | 815 | 5.5513423681259155e-001 -1.9791823625564575e-001 816 | <_> 817 | 818 | 0 -1 113 -4.5122690498828888e-003 819 | 820 | 5.5083745718002319e-001 -1.8810540437698364e-001 821 | <_> 822 | 823 | 0 -1 130 -3.5149464383721352e-003 824 | 825 | 5.5467557907104492e-001 -2.2856147587299347e-001 826 | <_> 827 | 828 | 0 -1 121 -4.4786706566810608e-003 829 | 830 | -7.9106998443603516e-001 1.7836479842662811e-001 831 | 832 | <_> 833 | 15 834 | -1.1898330450057983e+000 835 | 836 | <_> 837 | 838 | 0 -1 0 1.5206767246127129e-002 839 | 840 | -4.9173194169998169e-001 2.7093595266342163e-001 841 | <_> 842 | 843 | 0 -1 125 6.9564773002639413e-004 844 | 845 | -2.3066598176956177e-001 5.4028344154357910e-001 846 | <_> 847 | 848 | 0 -1 125 -8.3668017759919167e-004 849 | 850 | 4.4658055901527405e-001 -2.7778497338294983e-001 851 | <_> 852 | 853 | 0 -1 91 -3.8321319967508316e-002 854 | 855 | -7.9069298505783081e-001 1.8700349330902100e-001 856 | <_> 857 | 858 | 0 -1 207 -2.1063965687062591e-004 859 | 860 | -6.3163763284683228e-001 1.8656146526336670e-001 861 | <_> 862 | 863 | 0 -1 61 3.6907330155372620e-002 864 | 865 | 9.9319733679294586e-002 -7.6762360334396362e-001 866 | <_> 867 | 868 | 0 -1 85 8.1071127206087112e-003 869 | 870 | -2.8561261296272278e-001 3.4748569130897522e-001 871 | <_> 872 | 873 | 0 -1 189 6.2815943965688348e-004 874 | 875 | 1.6656193137168884e-001 -5.4635977745056152e-001 876 | <_> 877 | 878 | 0 -1 86 2.8582263621501625e-004 879 | 880 | -2.4100163578987122e-001 4.5410770177841187e-001 881 | <_> 882 | 883 | 0 -1 173 -1.9862279295921326e-002 884 | 885 | -9.4317340850830078e-001 1.2513674795627594e-001 886 | <_> 887 | 888 | 0 -1 96 1.1506280861794949e-003 889 | 890 | -2.4514634907245636e-001 4.6452957391738892e-001 891 | <_> 892 | 893 | 0 -1 29 2.3451185552403331e-004 894 | 895 | 1.2489952147006989e-001 -8.0278074741363525e-001 896 | <_> 897 | 898 | 0 -1 101 6.7837134702131152e-004 899 | 900 | -2.5017899274826050e-001 4.3841627240180969e-001 901 | <_> 902 | 903 | 0 -1 17 3.1583159579895437e-004 904 | 905 | 1.5951988101005554e-001 -7.4524724483489990e-001 906 | <_> 907 | 908 | 0 -1 110 7.2623658925294876e-003 909 | 910 | 1.2511830031871796e-001 -6.5659755468368530e-001 911 | 912 | <_> 913 | 15 914 | -1.2416906356811523e+000 915 | 916 | <_> 917 | 918 | 0 -1 2 7.5144092552363873e-003 919 | 920 | -5.9518074989318848e-001 5.3793102502822876e-002 921 | <_> 922 | 923 | 0 -1 98 -6.4494344405829906e-004 924 | 925 | 2.0429474115371704e-001 -4.3661779165267944e-001 926 | <_> 927 | 928 | 0 -1 196 3.3831471228040755e-004 929 | 930 | -2.1566553413867950e-001 4.7118204832077026e-001 931 | <_> 932 | 933 | 0 -1 73 2.8320802375674248e-003 934 | 935 | 1.3322307169437408e-001 -8.3729231357574463e-001 936 | <_> 937 | 938 | 0 -1 199 1.6218879027292132e-003 939 | 940 | -2.0889574289321899e-001 4.7114694118499756e-001 941 | <_> 942 | 943 | 0 -1 10 2.7122153551317751e-004 944 | 945 | 1.1475630849599838e-001 -7.8029519319534302e-001 946 | <_> 947 | 948 | 0 -1 170 8.8358242064714432e-003 949 | 950 | 1.2460929155349731e-001 -7.6791721582412720e-001 951 | <_> 952 | 953 | 0 -1 106 9.7634072881191969e-004 954 | 955 | -2.0806105434894562e-001 5.1318311691284180e-001 956 | <_> 957 | 958 | 0 -1 107 -2.1239042282104492e-002 959 | 960 | -8.7171542644500732e-001 1.2721680104732513e-001 961 | <_> 962 | 963 | 0 -1 97 7.1797124110162258e-004 964 | 965 | -3.0763280391693115e-001 3.7504923343658447e-001 966 | <_> 967 | 968 | 0 -1 32 2.7504155412316322e-002 969 | 970 | 1.5651945769786835e-001 -7.9516488313674927e-001 971 | <_> 972 | 973 | 0 -1 178 1.0624636197462678e-003 974 | 975 | 1.3473348319530487e-001 -6.9174814224243164e-001 976 | <_> 977 | 978 | 0 -1 33 -8.1248432397842407e-002 979 | 980 | -8.5117286443710327e-001 1.0601779073476791e-001 981 | <_> 982 | 983 | 0 -1 140 -2.2936165332794189e-002 984 | 985 | 3.9202499389648438e-001 -2.9867398738861084e-001 986 | <_> 987 | 988 | 0 -1 146 -1.3326616026461124e-003 989 | 990 | 4.7240665555000305e-001 -2.6287403702735901e-001 991 | 992 | <_> 993 | 13 994 | -1.3383979797363281e+000 995 | 996 | <_> 997 | 998 | 0 -1 3 3.2254494726657867e-002 999 | 1000 | -6.5151512622833252e-001 7.9947575926780701e-002 1001 | <_> 1002 | 1003 | 0 -1 172 -1.1810796568170190e-003 1004 | 1005 | 2.5173431634902954e-001 -4.5536977052688599e-001 1006 | <_> 1007 | 1008 | 0 -1 88 8.0361258005723357e-004 1009 | 1010 | -2.1178695559501648e-001 4.9318632483482361e-001 1011 | <_> 1012 | 1013 | 0 -1 93 6.6201295703649521e-004 1014 | 1015 | -1.9441033899784088e-001 4.6225026249885559e-001 1016 | <_> 1017 | 1018 | 0 -1 84 3.4565184614621103e-004 1019 | 1020 | -2.1175089478492737e-001 4.6985754370689392e-001 1021 | <_> 1022 | 1023 | 0 -1 132 -5.6433549616485834e-004 1024 | 1025 | -7.9713624715805054e-001 1.8714086711406708e-001 1026 | <_> 1027 | 1028 | 0 -1 56 5.8492692187428474e-004 1029 | 1030 | -3.9330720901489258e-001 2.4242231249809265e-001 1031 | <_> 1032 | 1033 | 0 -1 13 2.5043603032827377e-002 1034 | 1035 | 1.3490234315395355e-001 -7.5923883914947510e-001 1036 | <_> 1037 | 1038 | 0 -1 37 -1.8510785885155201e-003 1039 | 1040 | 4.1279399394989014e-001 -2.7271771430969238e-001 1041 | <_> 1042 | 1043 | 0 -1 68 -2.5741360150277615e-004 1044 | 1045 | -6.3662034273147583e-001 1.8135882914066315e-001 1046 | <_> 1047 | 1048 | 0 -1 184 -1.5121832489967346e-002 1049 | 1050 | 2.5249326229095459e-001 -3.8438034057617188e-001 1051 | <_> 1052 | 1053 | 0 -1 203 -1.5006031841039658e-002 1054 | 1055 | -8.4878319501876831e-001 1.1718367785215378e-001 1056 | <_> 1057 | 1058 | 0 -1 74 4.9880752339959145e-004 1059 | 1060 | -2.6755046844482422e-001 4.5769825577735901e-001 1061 | 1062 | <_> 1063 | 12 1064 | -1.2097512483596802e+000 1065 | 1066 | <_> 1067 | 1068 | 0 -1 195 -1.1614991351962090e-002 1069 | 1070 | 1.4465409517288208e-001 -5.9521216154098511e-001 1071 | <_> 1072 | 1073 | 0 -1 75 3.9767110138200223e-004 1074 | 1075 | -4.2697989940643311e-001 2.4382311105728149e-001 1076 | <_> 1077 | 1078 | 0 -1 47 -4.6969857066869736e-002 1079 | 1080 | -9.3969690799713135e-001 1.2196484953165054e-001 1081 | <_> 1082 | 1083 | 0 -1 136 5.5550434626638889e-004 1084 | 1085 | -1.8246935307979584e-001 6.5156191587448120e-001 1086 | <_> 1087 | 1088 | 0 -1 99 2.9468833236023784e-004 1089 | 1090 | 1.5099152922630310e-001 -7.8840750455856323e-001 1091 | <_> 1092 | 1093 | 0 -1 44 1.2439775280654430e-002 1094 | 1095 | 1.4981375634670258e-001 -7.5917595624923706e-001 1096 | <_> 1097 | 1098 | 0 -1 147 6.6337559837847948e-004 1099 | 1100 | -2.5185841321945190e-001 5.9387433528900146e-001 1101 | <_> 1102 | 1103 | 0 -1 148 -6.8454549182206392e-004 1104 | 1105 | 5.1199448108673096e-001 -2.5247576832771301e-001 1106 | <_> 1107 | 1108 | 0 -1 141 1.4808592386543751e-003 1109 | 1110 | 2.2439701855182648e-001 -5.8184891939163208e-001 1111 | <_> 1112 | 1113 | 0 -1 12 6.0307271778583527e-003 1114 | 1115 | -4.3553912639617920e-001 2.8183382749557495e-001 1116 | <_> 1117 | 1118 | 0 -1 78 -1.9170897081494331e-002 1119 | 1120 | -8.5707378387451172e-001 1.4850790798664093e-001 1121 | <_> 1122 | 1123 | 0 -1 122 3.0278289341367781e-004 1124 | 1125 | -3.1547480821609497e-001 4.1798374056816101e-001 1126 | 1127 | <_> 1128 | 10 1129 | -1.2253109216690063e+000 1130 | 1131 | <_> 1132 | 1133 | 0 -1 181 4.6847470104694366e-002 1134 | 1135 | -4.9239391088485718e-001 5.2287584543228149e-001 1136 | <_> 1137 | 1138 | 0 -1 118 2.2181579843163490e-003 1139 | 1140 | -4.2569425702095032e-001 3.6892616748809814e-001 1141 | <_> 1142 | 1143 | 0 -1 145 6.1082182219251990e-004 1144 | 1145 | 1.7654621601104736e-001 -8.2656937837600708e-001 1146 | <_> 1147 | 1148 | 0 -1 127 1.7401995137333870e-002 1149 | 1150 | 2.7770876884460449e-001 -5.6393522024154663e-001 1151 | <_> 1152 | 1153 | 0 -1 54 5.2314018830657005e-004 1154 | 1155 | -3.6257097125053406e-001 4.6126455068588257e-001 1156 | <_> 1157 | 1158 | 0 -1 206 2.1581796463578939e-003 1159 | 1160 | 1.9110183417797089e-001 -6.8012320995330811e-001 1161 | <_> 1162 | 1163 | 0 -1 192 -1.3209994649514556e-003 1164 | 1165 | 6.7618584632873535e-001 -2.6087108254432678e-001 1166 | <_> 1167 | 1168 | 0 -1 126 -1.2237254530191422e-002 1169 | 1170 | -5.7184767723083496e-001 3.0778104066848755e-001 1171 | <_> 1172 | 1173 | 0 -1 36 8.7829465046525002e-003 1174 | 1175 | 1.6890920698642731e-001 -7.8835797309875488e-001 1176 | <_> 1177 | 1178 | 0 -1 183 7.5588272884488106e-003 1179 | 1180 | 1.5143942832946777e-001 -8.2572847604751587e-001 1181 | 1182 | <_> 1183 | 1184 | <_> 1185 | 0 0 10 10 -1. 1186 | <_> 1187 | 0 0 5 5 2. 1188 | <_> 1189 | 5 5 5 5 2. 1190 | 0 1191 | <_> 1192 | 1193 | <_> 1194 | 0 0 12 16 -1. 1195 | <_> 1196 | 6 0 6 16 2. 1197 | 0 1198 | <_> 1199 | 1200 | <_> 1201 | 0 3 10 6 -1. 1202 | <_> 1203 | 5 3 5 6 2. 1204 | 0 1205 | <_> 1206 | 1207 | <_> 1208 | 0 3 21 16 -1. 1209 | <_> 1210 | 7 3 7 16 3. 1211 | 0 1212 | <_> 1213 | 1214 | <_> 1215 | 0 4 16 9 -1. 1216 | <_> 1217 | 4 4 8 9 2. 1218 | 0 1219 | <_> 1220 | 1221 | <_> 1222 | 0 4 10 12 -1. 1223 | <_> 1224 | 5 4 5 12 2. 1225 | 0 1226 | <_> 1227 | 1228 | <_> 1229 | 0 7 14 7 -1. 1230 | <_> 1231 | 7 7 7 7 2. 1232 | 0 1233 | <_> 1234 | 1235 | <_> 1236 | 0 9 12 7 -1. 1237 | <_> 1238 | 6 9 6 7 2. 1239 | 0 1240 | <_> 1241 | 1242 | <_> 1243 | 0 9 60 3 -1. 1244 | <_> 1245 | 30 9 30 3 2. 1246 | 0 1247 | <_> 1248 | 1249 | <_> 1250 | 0 10 8 3 -1. 1251 | <_> 1252 | 4 10 4 3 2. 1253 | 0 1254 | <_> 1255 | 1256 | <_> 1257 | 0 11 1 2 -1. 1258 | <_> 1259 | 0 12 1 1 2. 1260 | 0 1261 | <_> 1262 | 1263 | <_> 1264 | 1 0 51 12 -1. 1265 | <_> 1266 | 1 4 51 4 3. 1267 | 0 1268 | <_> 1269 | 1270 | <_> 1271 | 1 3 15 7 -1. 1272 | <_> 1273 | 6 3 5 7 3. 1274 | 0 1275 | <_> 1276 | 1277 | <_> 1278 | 1 7 30 6 -1. 1279 | <_> 1280 | 1 7 15 3 2. 1281 | <_> 1282 | 16 10 15 3 2. 1283 | 0 1284 | <_> 1285 | 1286 | <_> 1287 | 1 12 1 2 -1. 1288 | <_> 1289 | 1 13 1 1 2. 1290 | 0 1291 | <_> 1292 | 1293 | <_> 1294 | 2 2 18 16 -1. 1295 | <_> 1296 | 2 6 18 8 2. 1297 | 0 1298 | <_> 1299 | 1300 | <_> 1301 | 2 3 29 4 -1. 1302 | <_> 1303 | 2 5 29 2 2. 1304 | 0 1305 | <_> 1306 | 1307 | <_> 1308 | 2 9 1 2 -1. 1309 | <_> 1310 | 2 10 1 1 2. 1311 | 0 1312 | <_> 1313 | 1314 | <_> 1315 | 2 14 40 6 -1. 1316 | <_> 1317 | 2 17 40 3 2. 1318 | 0 1319 | <_> 1320 | 1321 | <_> 1322 | 3 0 22 6 -1. 1323 | <_> 1324 | 3 2 22 2 3. 1325 | 0 1326 | <_> 1327 | 1328 | <_> 1329 | 3 2 38 2 -1. 1330 | <_> 1331 | 3 2 19 1 2. 1332 | <_> 1333 | 22 3 19 1 2. 1334 | 0 1335 | <_> 1336 | 1337 | <_> 1338 | 3 4 51 16 -1. 1339 | <_> 1340 | 3 8 51 8 2. 1341 | 0 1342 | <_> 1343 | 1344 | <_> 1345 | 3 7 3 8 -1. 1346 | <_> 1347 | 4 7 1 8 3. 1348 | 0 1349 | <_> 1350 | 1351 | <_> 1352 | 3 9 1 3 -1. 1353 | <_> 1354 | 3 10 1 1 3. 1355 | 0 1356 | <_> 1357 | 1358 | <_> 1359 | 4 8 3 5 -1. 1360 | <_> 1361 | 5 8 1 5 3. 1362 | 0 1363 | <_> 1364 | 1365 | <_> 1366 | 4 8 4 9 -1. 1367 | <_> 1368 | 5 8 2 9 2. 1369 | 0 1370 | <_> 1371 | 1372 | <_> 1373 | 4 11 36 9 -1. 1374 | <_> 1375 | 16 11 12 9 3. 1376 | 0 1377 | <_> 1378 | 1379 | <_> 1380 | 4 14 49 6 -1. 1381 | <_> 1382 | 4 17 49 3 2. 1383 | 0 1384 | <_> 1385 | 1386 | <_> 1387 | 5 0 17 6 -1. 1388 | <_> 1389 | 5 2 17 2 3. 1390 | 0 1391 | <_> 1392 | 1393 | <_> 1394 | 5 1 3 1 -1. 1395 | <_> 1396 | 6 1 1 1 3. 1397 | 0 1398 | <_> 1399 | 1400 | <_> 1401 | 5 1 8 2 -1. 1402 | <_> 1403 | 7 1 4 2 2. 1404 | 0 1405 | <_> 1406 | 1407 | <_> 1408 | 5 2 36 9 -1. 1409 | <_> 1410 | 17 2 12 9 3. 1411 | 0 1412 | <_> 1413 | 1414 | <_> 1415 | 5 3 33 17 -1. 1416 | <_> 1417 | 16 3 11 17 3. 1418 | 0 1419 | <_> 1420 | 1421 | <_> 1422 | 6 0 30 19 -1. 1423 | <_> 1424 | 16 0 10 19 3. 1425 | 0 1426 | <_> 1427 | 1428 | <_> 1429 | 6 3 29 4 -1. 1430 | <_> 1431 | 6 5 29 2 2. 1432 | 0 1433 | <_> 1434 | 1435 | <_> 1436 | 6 4 16 16 -1. 1437 | <_> 1438 | 14 4 8 16 2. 1439 | 0 1440 | <_> 1441 | 1442 | <_> 1443 | 6 9 54 1 -1. 1444 | <_> 1445 | 33 9 27 1 2. 1446 | 0 1447 | <_> 1448 | 1449 | <_> 1450 | 7 0 4 18 -1. 1451 | <_> 1452 | 8 0 2 18 2. 1453 | 0 1454 | <_> 1455 | 1456 | <_> 1457 | 7 3 12 15 -1. 1458 | <_> 1459 | 13 3 6 15 2. 1460 | 0 1461 | <_> 1462 | 1463 | <_> 1464 | 7 4 20 5 -1. 1465 | <_> 1466 | 12 4 10 5 2. 1467 | 0 1468 | <_> 1469 | 1470 | <_> 1471 | 7 4 6 3 -1. 1472 | <_> 1473 | 7 5 6 1 3. 1474 | 0 1475 | <_> 1476 | 1477 | <_> 1478 | 7 4 36 6 -1. 1479 | <_> 1480 | 19 4 12 6 3. 1481 | 0 1482 | <_> 1483 | 1484 | <_> 1485 | 7 5 28 4 -1. 1486 | <_> 1487 | 14 5 14 4 2. 1488 | 0 1489 | <_> 1490 | 1491 | <_> 1492 | 7 7 4 11 -1. 1493 | <_> 1494 | 8 7 2 11 2. 1495 | 0 1496 | <_> 1497 | 1498 | <_> 1499 | 7 9 12 7 -1. 1500 | <_> 1501 | 13 9 6 7 2. 1502 | 0 1503 | <_> 1504 | 1505 | <_> 1506 | 8 1 21 4 -1. 1507 | <_> 1508 | 8 3 21 2 2. 1509 | 0 1510 | <_> 1511 | 1512 | <_> 1513 | 8 4 28 6 -1. 1514 | <_> 1515 | 15 4 14 6 2. 1516 | 0 1517 | <_> 1518 | 1519 | <_> 1520 | 8 8 38 6 -1. 1521 | <_> 1522 | 8 10 38 2 3. 1523 | 0 1524 | <_> 1525 | 1526 | <_> 1527 | 8 14 25 4 -1. 1528 | <_> 1529 | 8 15 25 2 2. 1530 | 0 1531 | <_> 1532 | 1533 | <_> 1534 | 9 2 12 4 -1. 1535 | <_> 1536 | 12 2 6 4 2. 1537 | 0 1538 | <_> 1539 | 1540 | <_> 1541 | 9 5 24 3 -1. 1542 | <_> 1543 | 15 5 12 3 2. 1544 | 0 1545 | <_> 1546 | 1547 | <_> 1548 | 9 8 40 12 -1. 1549 | <_> 1550 | 9 12 40 4 3. 1551 | 0 1552 | <_> 1553 | 1554 | <_> 1555 | 10 2 8 2 -1. 1556 | <_> 1557 | 12 2 4 2 2. 1558 | 0 1559 | <_> 1560 | 1561 | <_> 1562 | 10 2 9 2 -1. 1563 | <_> 1564 | 13 2 3 2 3. 1565 | 0 1566 | <_> 1567 | 1568 | <_> 1569 | 10 5 3 3 -1. 1570 | <_> 1571 | 11 6 1 1 9. 1572 | 0 1573 | <_> 1574 | 1575 | <_> 1576 | 11 0 32 20 -1. 1577 | <_> 1578 | 19 0 16 20 2. 1579 | 0 1580 | <_> 1581 | 1582 | <_> 1583 | 11 3 1 4 -1. 1584 | <_> 1585 | 11 5 1 2 2. 1586 | 0 1587 | <_> 1588 | 1589 | <_> 1590 | 11 9 4 3 -1. 1591 | <_> 1592 | 12 9 2 3 2. 1593 | 0 1594 | <_> 1595 | 1596 | <_> 1597 | 11 9 3 7 -1. 1598 | <_> 1599 | 12 9 1 7 3. 1600 | 0 1601 | <_> 1602 | 1603 | <_> 1604 | 12 3 9 2 -1. 1605 | <_> 1606 | 15 3 3 2 3. 1607 | 0 1608 | <_> 1609 | 1610 | <_> 1611 | 12 6 6 6 -1. 1612 | <_> 1613 | 14 6 2 6 3. 1614 | 0 1615 | <_> 1616 | 1617 | <_> 1618 | 12 10 42 10 -1. 1619 | <_> 1620 | 26 10 14 10 3. 1621 | 0 1622 | <_> 1623 | 1624 | <_> 1625 | 12 14 11 3 -1. 1626 | <_> 1627 | 12 15 11 1 3. 1628 | 0 1629 | <_> 1630 | 1631 | <_> 1632 | 13 4 6 14 -1. 1633 | <_> 1634 | 15 4 2 14 3. 1635 | 0 1636 | <_> 1637 | 1638 | <_> 1639 | 13 8 3 6 -1. 1640 | <_> 1641 | 14 8 1 6 3. 1642 | 0 1643 | <_> 1644 | 1645 | <_> 1646 | 13 11 32 2 -1. 1647 | <_> 1648 | 21 11 16 2 2. 1649 | 0 1650 | <_> 1651 | 1652 | <_> 1653 | 13 13 25 6 -1. 1654 | <_> 1655 | 13 16 25 3 2. 1656 | 0 1657 | <_> 1658 | 1659 | <_> 1660 | 13 16 21 3 -1. 1661 | <_> 1662 | 20 16 7 3 3. 1663 | 0 1664 | <_> 1665 | 1666 | <_> 1667 | 14 2 3 2 -1. 1668 | <_> 1669 | 15 2 1 2 3. 1670 | 0 1671 | <_> 1672 | 1673 | <_> 1674 | 14 2 24 8 -1. 1675 | <_> 1676 | 20 2 12 8 2. 1677 | 0 1678 | <_> 1679 | 1680 | <_> 1681 | 14 13 36 6 -1. 1682 | <_> 1683 | 23 13 18 6 2. 1684 | 0 1685 | <_> 1686 | 1687 | <_> 1688 | 14 14 8 3 -1. 1689 | <_> 1690 | 14 15 8 1 3. 1691 | 0 1692 | <_> 1693 | 1694 | <_> 1695 | 14 14 45 6 -1. 1696 | <_> 1697 | 14 17 45 3 2. 1698 | 0 1699 | <_> 1700 | 1701 | <_> 1702 | 14 18 9 2 -1. 1703 | <_> 1704 | 17 18 3 2 3. 1705 | 0 1706 | <_> 1707 | 1708 | <_> 1709 | 15 9 4 1 -1. 1710 | <_> 1711 | 16 9 2 1 2. 1712 | 0 1713 | <_> 1714 | 1715 | <_> 1716 | 15 10 19 4 -1. 1717 | <_> 1718 | 15 12 19 2 2. 1719 | 0 1720 | <_> 1721 | 1722 | <_> 1723 | 16 0 28 8 -1. 1724 | <_> 1725 | 16 2 28 4 2. 1726 | 0 1727 | <_> 1728 | 1729 | <_> 1730 | 16 2 36 18 -1. 1731 | <_> 1732 | 28 2 12 18 3. 1733 | 0 1734 | <_> 1735 | 1736 | <_> 1737 | 16 6 24 6 -1. 1738 | <_> 1739 | 22 6 12 6 2. 1740 | 0 1741 | <_> 1742 | 1743 | <_> 1744 | 17 1 24 6 -1. 1745 | <_> 1746 | 17 3 24 2 3. 1747 | 0 1748 | <_> 1749 | 1750 | <_> 1751 | 17 3 15 12 -1. 1752 | <_> 1753 | 22 7 5 4 9. 1754 | 0 1755 | <_> 1756 | 1757 | <_> 1758 | 17 15 11 3 -1. 1759 | <_> 1760 | 17 16 11 1 3. 1761 | 0 1762 | <_> 1763 | 1764 | <_> 1765 | 18 5 6 10 -1. 1766 | <_> 1767 | 20 5 2 10 3. 1768 | 0 1769 | <_> 1770 | 1771 | <_> 1772 | 18 6 18 3 -1. 1773 | <_> 1774 | 24 6 6 3 3. 1775 | 0 1776 | <_> 1777 | 1778 | <_> 1779 | 18 11 3 1 -1. 1780 | <_> 1781 | 19 11 1 1 3. 1782 | 0 1783 | <_> 1784 | 1785 | <_> 1786 | 19 6 32 2 -1. 1787 | <_> 1788 | 27 6 16 2 2. 1789 | 0 1790 | <_> 1791 | 1792 | <_> 1793 | 19 8 3 1 -1. 1794 | <_> 1795 | 20 8 1 1 3. 1796 | 0 1797 | <_> 1798 | 1799 | <_> 1800 | 19 9 14 11 -1. 1801 | <_> 1802 | 26 9 7 11 2. 1803 | 0 1804 | <_> 1805 | 1806 | <_> 1807 | 19 10 3 3 -1. 1808 | <_> 1809 | 20 10 1 3 3. 1810 | 0 1811 | <_> 1812 | 1813 | <_> 1814 | 19 13 7 3 -1. 1815 | <_> 1816 | 19 14 7 1 3. 1817 | 0 1818 | <_> 1819 | 1820 | <_> 1821 | 19 14 13 3 -1. 1822 | <_> 1823 | 19 15 13 1 3. 1824 | 0 1825 | <_> 1826 | 1827 | <_> 1828 | 20 0 15 20 -1. 1829 | <_> 1830 | 25 0 5 20 3. 1831 | 0 1832 | <_> 1833 | 1834 | <_> 1835 | 20 9 3 1 -1. 1836 | <_> 1837 | 21 9 1 1 3. 1838 | 0 1839 | <_> 1840 | 1841 | <_> 1842 | 20 10 3 2 -1. 1843 | <_> 1844 | 21 10 1 2 3. 1845 | 0 1846 | <_> 1847 | 1848 | <_> 1849 | 21 1 21 6 -1. 1850 | <_> 1851 | 21 3 21 2 3. 1852 | 0 1853 | <_> 1854 | 1855 | <_> 1856 | 21 8 4 3 -1. 1857 | <_> 1858 | 22 8 2 3 2. 1859 | 0 1860 | <_> 1861 | 1862 | <_> 1863 | 21 9 3 4 -1. 1864 | <_> 1865 | 22 9 1 4 3. 1866 | 0 1867 | <_> 1868 | 1869 | <_> 1870 | 21 10 4 2 -1. 1871 | <_> 1872 | 22 10 2 2 2. 1873 | 0 1874 | <_> 1875 | 1876 | <_> 1877 | 21 11 24 2 -1. 1878 | <_> 1879 | 27 11 12 2 2. 1880 | 0 1881 | <_> 1882 | 1883 | <_> 1884 | 21 18 4 1 -1. 1885 | <_> 1886 | 22 18 2 1 2. 1887 | 0 1888 | <_> 1889 | 1890 | <_> 1891 | 22 3 4 1 -1. 1892 | <_> 1893 | 23 3 2 1 2. 1894 | 0 1895 | <_> 1896 | 1897 | <_> 1898 | 22 6 2 6 -1. 1899 | <_> 1900 | 22 6 1 3 2. 1901 | <_> 1902 | 23 9 1 3 2. 1903 | 0 1904 | <_> 1905 | 1906 | <_> 1907 | 22 7 3 3 -1. 1908 | <_> 1909 | 23 8 1 1 9. 1910 | 0 1911 | <_> 1912 | 1913 | <_> 1914 | 22 8 3 5 -1. 1915 | <_> 1916 | 23 8 1 5 3. 1917 | 0 1918 | <_> 1919 | 1920 | <_> 1921 | 22 9 3 2 -1. 1922 | <_> 1923 | 23 9 1 2 3. 1924 | 0 1925 | <_> 1926 | 1927 | <_> 1928 | 23 8 3 3 -1. 1929 | <_> 1930 | 24 8 1 3 3. 1931 | 0 1932 | <_> 1933 | 1934 | <_> 1935 | 23 10 3 2 -1. 1936 | <_> 1937 | 24 10 1 2 3. 1938 | 0 1939 | <_> 1940 | 1941 | <_> 1942 | 24 3 20 17 -1. 1943 | <_> 1944 | 29 3 10 17 2. 1945 | 0 1946 | <_> 1947 | 1948 | <_> 1949 | 24 4 14 6 -1. 1950 | <_> 1951 | 31 4 7 6 2. 1952 | 0 1953 | <_> 1954 | 1955 | <_> 1956 | 24 18 9 2 -1. 1957 | <_> 1958 | 27 18 3 2 3. 1959 | 0 1960 | <_> 1961 | 1962 | <_> 1963 | 25 5 8 4 -1. 1964 | <_> 1965 | 25 5 4 4 2. 1966 | 1 1967 | <_> 1968 | 1969 | <_> 1970 | 25 6 22 14 -1. 1971 | <_> 1972 | 36 6 11 14 2. 1973 | 0 1974 | <_> 1975 | 1976 | <_> 1977 | 25 12 28 8 -1. 1978 | <_> 1979 | 25 14 28 4 2. 1980 | 0 1981 | <_> 1982 | 1983 | <_> 1984 | 25 14 9 3 -1. 1985 | <_> 1986 | 25 15 9 1 3. 1987 | 0 1988 | <_> 1989 | 1990 | <_> 1991 | 26 2 27 18 -1. 1992 | <_> 1993 | 35 2 9 18 3. 1994 | 0 1995 | <_> 1996 | 1997 | <_> 1998 | 26 3 22 3 -1. 1999 | <_> 2000 | 26 4 22 1 3. 2001 | 0 2002 | <_> 2003 | 2004 | <_> 2005 | 26 4 8 4 -1. 2006 | <_> 2007 | 30 4 4 4 2. 2008 | 0 2009 | <_> 2010 | 2011 | <_> 2012 | 26 4 20 6 -1. 2013 | <_> 2014 | 31 4 10 6 2. 2015 | 0 2016 | <_> 2017 | 2018 | <_> 2019 | 26 7 1 12 -1. 2020 | <_> 2021 | 22 11 1 4 3. 2022 | 1 2023 | <_> 2024 | 2025 | <_> 2026 | 26 9 3 3 -1. 2027 | <_> 2028 | 27 9 1 3 3. 2029 | 0 2030 | <_> 2031 | 2032 | <_> 2033 | 26 13 9 3 -1. 2034 | <_> 2035 | 26 14 9 1 3. 2036 | 0 2037 | <_> 2038 | 2039 | <_> 2040 | 27 3 15 6 -1. 2041 | <_> 2042 | 32 3 5 6 3. 2043 | 0 2044 | <_> 2045 | 2046 | <_> 2047 | 27 9 3 1 -1. 2048 | <_> 2049 | 28 9 1 1 3. 2050 | 0 2051 | <_> 2052 | 2053 | <_> 2054 | 27 9 3 2 -1. 2055 | <_> 2056 | 28 9 1 2 3. 2057 | 0 2058 | <_> 2059 | 2060 | <_> 2061 | 27 10 3 3 -1. 2062 | <_> 2063 | 28 10 1 3 3. 2064 | 0 2065 | <_> 2066 | 2067 | <_> 2068 | 27 11 3 2 -1. 2069 | <_> 2070 | 28 11 1 2 3. 2071 | 0 2072 | <_> 2073 | 2074 | <_> 2075 | 28 2 10 4 -1. 2076 | <_> 2077 | 28 2 10 2 2. 2078 | 1 2079 | <_> 2080 | 2081 | <_> 2082 | 28 8 32 6 -1. 2083 | <_> 2084 | 28 10 32 2 3. 2085 | 0 2086 | <_> 2087 | 2088 | <_> 2089 | 28 10 3 1 -1. 2090 | <_> 2091 | 29 10 1 1 3. 2092 | 0 2093 | <_> 2094 | 2095 | <_> 2096 | 28 11 3 1 -1. 2097 | <_> 2098 | 29 11 1 1 3. 2099 | 0 2100 | <_> 2101 | 2102 | <_> 2103 | 28 15 5 4 -1. 2104 | <_> 2105 | 28 16 5 2 2. 2106 | 0 2107 | <_> 2108 | 2109 | <_> 2110 | 28 16 23 4 -1. 2111 | <_> 2112 | 28 17 23 2 2. 2113 | 0 2114 | <_> 2115 | 2116 | <_> 2117 | 28 19 6 1 -1. 2118 | <_> 2119 | 30 19 2 1 3. 2120 | 0 2121 | <_> 2122 | 2123 | <_> 2124 | 29 3 9 4 -1. 2125 | <_> 2126 | 32 3 3 4 3. 2127 | 0 2128 | <_> 2129 | 2130 | <_> 2131 | 29 5 9 1 -1. 2132 | <_> 2133 | 32 5 3 1 3. 2134 | 0 2135 | <_> 2136 | 2137 | <_> 2138 | 29 8 3 6 -1. 2139 | <_> 2140 | 30 8 1 6 3. 2141 | 0 2142 | <_> 2143 | 2144 | <_> 2145 | 29 9 3 1 -1. 2146 | <_> 2147 | 30 9 1 1 3. 2148 | 0 2149 | <_> 2150 | 2151 | <_> 2152 | 29 11 10 4 -1. 2153 | <_> 2154 | 29 13 10 2 2. 2155 | 0 2156 | <_> 2157 | 2158 | <_> 2159 | 29 11 26 8 -1. 2160 | <_> 2161 | 29 13 26 4 2. 2162 | 0 2163 | <_> 2164 | 2165 | <_> 2166 | 30 0 16 6 -1. 2167 | <_> 2168 | 30 3 16 3 2. 2169 | 0 2170 | <_> 2171 | 2172 | <_> 2173 | 30 2 30 6 -1. 2174 | <_> 2175 | 30 2 15 3 2. 2176 | <_> 2177 | 45 5 15 3 2. 2178 | 0 2179 | <_> 2180 | 2181 | <_> 2182 | 30 3 9 4 -1. 2183 | <_> 2184 | 33 3 3 4 3. 2185 | 0 2186 | <_> 2187 | 2188 | <_> 2189 | 30 5 9 4 -1. 2190 | <_> 2191 | 30 6 9 2 2. 2192 | 0 2193 | <_> 2194 | 2195 | <_> 2196 | 30 10 3 2 -1. 2197 | <_> 2198 | 31 10 1 2 3. 2199 | 0 2200 | <_> 2201 | 2202 | <_> 2203 | 30 14 18 6 -1. 2204 | <_> 2205 | 36 14 6 6 3. 2206 | 0 2207 | <_> 2208 | 2209 | <_> 2210 | 31 3 4 3 -1. 2211 | <_> 2212 | 32 3 2 3 2. 2213 | 0 2214 | <_> 2215 | 2216 | <_> 2217 | 31 7 4 9 -1. 2218 | <_> 2219 | 32 7 2 9 2. 2220 | 0 2221 | <_> 2222 | 2223 | <_> 2224 | 31 11 3 2 -1. 2225 | <_> 2226 | 32 11 1 2 3. 2227 | 0 2228 | <_> 2229 | 2230 | <_> 2231 | 31 11 3 3 -1. 2232 | <_> 2233 | 32 11 1 3 3. 2234 | 0 2235 | <_> 2236 | 2237 | <_> 2238 | 32 4 3 2 -1. 2239 | <_> 2240 | 33 4 1 2 3. 2241 | 0 2242 | <_> 2243 | 2244 | <_> 2245 | 32 6 18 6 -1. 2246 | <_> 2247 | 32 6 9 3 2. 2248 | <_> 2249 | 41 9 9 3 2. 2250 | 0 2251 | <_> 2252 | 2253 | <_> 2254 | 33 1 22 6 -1. 2255 | <_> 2256 | 33 4 22 3 2. 2257 | 0 2258 | <_> 2259 | 2260 | <_> 2261 | 33 3 4 2 -1. 2262 | <_> 2263 | 34 3 2 2 2. 2264 | 0 2265 | <_> 2266 | 2267 | <_> 2268 | 33 3 4 4 -1. 2269 | <_> 2270 | 34 3 2 4 2. 2271 | 0 2272 | <_> 2273 | 2274 | <_> 2275 | 33 5 4 1 -1. 2276 | <_> 2277 | 34 5 2 1 2. 2278 | 0 2279 | <_> 2280 | 2281 | <_> 2282 | 33 9 3 6 -1. 2283 | <_> 2284 | 34 9 1 6 3. 2285 | 0 2286 | <_> 2287 | 2288 | <_> 2289 | 33 10 3 3 -1. 2290 | <_> 2291 | 34 10 1 3 3. 2292 | 0 2293 | <_> 2294 | 2295 | <_> 2296 | 34 8 4 7 -1. 2297 | <_> 2298 | 35 8 2 7 2. 2299 | 0 2300 | <_> 2301 | 2302 | <_> 2303 | 34 9 3 5 -1. 2304 | <_> 2305 | 35 9 1 5 3. 2306 | 0 2307 | <_> 2308 | 2309 | <_> 2310 | 34 18 9 2 -1. 2311 | <_> 2312 | 37 18 3 2 3. 2313 | 0 2314 | <_> 2315 | 2316 | <_> 2317 | 35 0 8 6 -1. 2318 | <_> 2319 | 37 0 4 6 2. 2320 | 0 2321 | <_> 2322 | 2323 | <_> 2324 | 35 9 3 2 -1. 2325 | <_> 2326 | 36 9 1 2 3. 2327 | 0 2328 | <_> 2329 | 2330 | <_> 2331 | 36 9 24 9 -1. 2332 | <_> 2333 | 42 9 12 9 2. 2334 | 0 2335 | <_> 2336 | 2337 | <_> 2338 | 37 1 16 18 -1. 2339 | <_> 2340 | 41 1 8 18 2. 2341 | 0 2342 | <_> 2343 | 2344 | <_> 2345 | 37 11 20 8 -1. 2346 | <_> 2347 | 42 11 10 8 2. 2348 | 0 2349 | <_> 2350 | 2351 | <_> 2352 | 38 8 15 12 -1. 2353 | <_> 2354 | 38 12 15 4 3. 2355 | 0 2356 | <_> 2357 | 2358 | <_> 2359 | 39 6 12 8 -1. 2360 | <_> 2361 | 45 6 6 8 2. 2362 | 0 2363 | <_> 2364 | 2365 | <_> 2366 | 40 8 8 4 -1. 2367 | <_> 2368 | 40 8 8 2 2. 2369 | 1 2370 | <_> 2371 | 2372 | <_> 2373 | 40 10 3 1 -1. 2374 | <_> 2375 | 41 10 1 1 3. 2376 | 0 2377 | <_> 2378 | 2379 | <_> 2380 | 40 10 3 5 -1. 2381 | <_> 2382 | 41 10 1 5 3. 2383 | 0 2384 | <_> 2385 | 2386 | <_> 2387 | 40 13 12 6 -1. 2388 | <_> 2389 | 43 13 6 6 2. 2390 | 0 2391 | <_> 2392 | 2393 | <_> 2394 | 41 5 7 15 -1. 2395 | <_> 2396 | 41 10 7 5 3. 2397 | 0 2398 | <_> 2399 | 2400 | <_> 2401 | 41 6 12 6 -1. 2402 | <_> 2403 | 45 6 4 6 3. 2404 | 0 2405 | <_> 2406 | 2407 | <_> 2408 | 41 7 12 7 -1. 2409 | <_> 2410 | 45 7 4 7 3. 2411 | 0 2412 | <_> 2413 | 2414 | <_> 2415 | 41 8 12 12 -1. 2416 | <_> 2417 | 45 8 4 12 3. 2418 | 0 2419 | <_> 2420 | 2421 | <_> 2422 | 41 9 3 6 -1. 2423 | <_> 2424 | 42 9 1 6 3. 2425 | 0 2426 | <_> 2427 | 2428 | <_> 2429 | 42 2 3 13 -1. 2430 | <_> 2431 | 43 2 1 13 3. 2432 | 0 2433 | <_> 2434 | 2435 | <_> 2436 | 42 4 18 10 -1. 2437 | <_> 2438 | 42 4 9 5 2. 2439 | <_> 2440 | 51 9 9 5 2. 2441 | 0 2442 | <_> 2443 | 2444 | <_> 2445 | 42 5 18 8 -1. 2446 | <_> 2447 | 42 5 9 4 2. 2448 | <_> 2449 | 51 9 9 4 2. 2450 | 0 2451 | <_> 2452 | 2453 | <_> 2454 | 42 7 2 7 -1. 2455 | <_> 2456 | 43 7 1 7 2. 2457 | 0 2458 | <_> 2459 | 2460 | <_> 2461 | 42 14 12 5 -1. 2462 | <_> 2463 | 46 14 4 5 3. 2464 | 0 2465 | <_> 2466 | 2467 | <_> 2468 | 43 1 10 9 -1. 2469 | <_> 2470 | 40 4 10 3 3. 2471 | 1 2472 | <_> 2473 | 2474 | <_> 2475 | 43 6 6 6 -1. 2476 | <_> 2477 | 43 9 6 3 2. 2478 | 0 2479 | <_> 2480 | 2481 | <_> 2482 | 44 0 8 20 -1. 2483 | <_> 2484 | 46 0 4 20 2. 2485 | 0 2486 | <_> 2487 | 2488 | <_> 2489 | 44 2 16 12 -1. 2490 | <_> 2491 | 44 2 8 6 2. 2492 | <_> 2493 | 52 8 8 6 2. 2494 | 0 2495 | <_> 2496 | 2497 | <_> 2498 | 44 5 3 8 -1. 2499 | <_> 2500 | 45 5 1 8 3. 2501 | 0 2502 | <_> 2503 | 2504 | <_> 2505 | 44 8 3 4 -1. 2506 | <_> 2507 | 45 8 1 4 3. 2508 | 0 2509 | <_> 2510 | 2511 | <_> 2512 | 44 12 16 4 -1. 2513 | <_> 2514 | 52 12 8 4 2. 2515 | 0 2516 | <_> 2517 | 2518 | <_> 2519 | 44 13 10 3 -1. 2520 | <_> 2521 | 49 13 5 3 2. 2522 | 0 2523 | <_> 2524 | 2525 | <_> 2526 | 45 19 9 1 -1. 2527 | <_> 2528 | 48 19 3 1 3. 2529 | 0 2530 | <_> 2531 | 2532 | <_> 2533 | 46 3 8 8 -1. 2534 | <_> 2535 | 50 3 4 8 2. 2536 | 0 2537 | <_> 2538 | 2539 | <_> 2540 | 47 12 10 6 -1. 2541 | <_> 2542 | 52 12 5 6 2. 2543 | 0 2544 | <_> 2545 | 2546 | <_> 2547 | 48 0 4 13 -1. 2548 | <_> 2549 | 49 0 2 13 2. 2550 | 0 2551 | <_> 2552 | 2553 | <_> 2554 | 48 5 3 12 -1. 2555 | <_> 2556 | 45 8 3 6 2. 2557 | 1 2558 | <_> 2559 | 2560 | <_> 2561 | 48 9 12 8 -1. 2562 | <_> 2563 | 54 9 6 8 2. 2564 | 0 2565 | <_> 2566 | 2567 | <_> 2568 | 48 13 12 4 -1. 2569 | <_> 2570 | 54 13 6 4 2. 2571 | 0 2572 | <_> 2573 | 2574 | <_> 2575 | 49 8 3 1 -1. 2576 | <_> 2577 | 50 8 1 1 3. 2578 | 0 2579 | <_> 2580 | 2581 | <_> 2582 | 49 8 3 2 -1. 2583 | <_> 2584 | 50 8 1 2 3. 2585 | 0 2586 | <_> 2587 | 2588 | <_> 2589 | 49 8 3 3 -1. 2590 | <_> 2591 | 50 8 1 3 3. 2592 | 0 2593 | <_> 2594 | 2595 | <_> 2596 | 50 9 3 3 -1. 2597 | <_> 2598 | 51 10 1 1 9. 2599 | 0 2600 | <_> 2601 | 2602 | <_> 2603 | 51 8 3 3 -1. 2604 | <_> 2605 | 52 8 1 3 3. 2606 | 0 2607 | <_> 2608 | 2609 | <_> 2610 | 52 6 6 10 -1. 2611 | <_> 2612 | 54 6 2 10 3. 2613 | 0 2614 | <_> 2615 | 2616 | <_> 2617 | 52 7 8 7 -1. 2618 | <_> 2619 | 56 7 4 7 2. 2620 | 0 2621 | <_> 2622 | 2623 | <_> 2624 | 52 8 8 4 -1. 2625 | <_> 2626 | 52 8 8 2 2. 2627 | 1 2628 | <_> 2629 | 2630 | <_> 2631 | 54 3 6 15 -1. 2632 | <_> 2633 | 57 3 3 15 2. 2634 | 0 2635 | <_> 2636 | 2637 | <_> 2638 | 54 8 6 7 -1. 2639 | <_> 2640 | 57 8 3 7 2. 2641 | 0 2642 | <_> 2643 | 2644 | <_> 2645 | 57 11 3 6 -1. 2646 | <_> 2647 | 57 13 3 2 3. 2648 | 0 2649 | <_> 2650 | 2651 | <_> 2652 | 59 8 1 3 -1. 2653 | <_> 2654 | 59 9 1 1 3. 2655 | 0 2656 | 2657 | -------------------------------------------------------------------------------- /Intermediate/Custom Object Detection/objectDetectoin.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | ################################################################ 4 | path = 'haarcascades/haarcascade_frontalface_default.xml' # PATH OF THE CASCADE 5 | cameraNo = 1 # CAMERA NUMBER 6 | objectName = 'Arduino' # OBJECT NAME TO DISPLAY 7 | frameWidth= 640 # DISPLAY WIDTH 8 | frameHeight = 480 # DISPLAY HEIGHT 9 | color= (255,0,255) 10 | ################################################################# 11 | 12 | 13 | cap = cv2.VideoCapture(cameraNo) 14 | cap.set(3, frameWidth) 15 | cap.set(4, frameHeight) 16 | 17 | def empty(a): 18 | pass 19 | 20 | # CREATE TRACKBAR 21 | cv2.namedWindow("Result") 22 | cv2.resizeWindow("Result",frameWidth,frameHeight+100) 23 | cv2.createTrackbar("Scale","Result",400,1000,empty) 24 | cv2.createTrackbar("Neig","Result",8,50,empty) 25 | cv2.createTrackbar("Min Area","Result",0,100000,empty) 26 | cv2.createTrackbar("Brightness","Result",180,255,empty) 27 | 28 | # LOAD THE CLASSIFIERS DOWNLOADED 29 | cascade = cv2.CascadeClassifier(path) 30 | 31 | while True: 32 | # SET CAMERA BRIGHTNESS FROM TRACKBAR VALUE 33 | cameraBrightness = cv2.getTrackbarPos("Brightness", "Result") 34 | cap.set(10, cameraBrightness) 35 | # GET CAMERA IMAGE AND CONVERT TO GRAYSCALE 36 | success, img = cap.read() 37 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 38 | # DETECT THE OBJECT USING THE CASCADE 39 | scaleVal =1 + (cv2.getTrackbarPos("Scale", "Result") /1000) 40 | neig=cv2.getTrackbarPos("Neig", "Result") 41 | objects = cascade.detectMultiScale(gray,scaleVal, neig) 42 | # DISPLAY THE DETECTED OBJECTS 43 | for (x,y,w,h) in objects: 44 | area = w*h 45 | minArea = cv2.getTrackbarPos("Min Area", "Result") 46 | if area >minArea: 47 | cv2.rectangle(img,(x,y),(x+w,y+h),color,3) 48 | cv2.putText(img,objectName,(x,y-5),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,color,2) 49 | roi_color = img[y:y+h, x:x+w] 50 | 51 | cv2.imshow("Result", img) 52 | 53 | if cv2.waitKey(1) & 0xFF == ord('q'): 54 | break 55 | -------------------------------------------------------------------------------- /Intermediate/Object Measurement/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/Object Measurement/1.jpg -------------------------------------------------------------------------------- /Intermediate/Object Measurement/ObjectMeasurement.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import utlis 3 | 4 | ################################### 5 | webcam = True 6 | path = '1.jpg' 7 | cap = cv2.VideoCapture(0) 8 | cap.set(10,160) 9 | cap.set(3,1920) 10 | cap.set(4,1080) 11 | scale = 3 12 | wP = 210 *scale 13 | hP= 297 *scale 14 | ################################### 15 | 16 | while True: 17 | if webcam:success,img = cap.read() 18 | else: img = cv2.imread(path) 19 | 20 | imgContours , conts = utlis.getContours(img,minArea=50000,filter=4) 21 | if len(conts) != 0: 22 | biggest = conts[0][2] 23 | #print(biggest) 24 | imgWarp = utlis.warpImg(img, biggest, wP,hP) 25 | imgContours2, conts2 = utlis.getContours(imgWarp, 26 | minArea=2000, filter=4, 27 | cThr=[50,50],draw = False) 28 | if len(conts) != 0: 29 | for obj in conts2: 30 | cv2.polylines(imgContours2,[obj[2]],True,(0,255,0),2) 31 | nPoints = utlis.reorder(obj[2]) 32 | nW = round((utlis.findDis(nPoints[0][0]//scale,nPoints[1][0]//scale)/10),1) 33 | nH = round((utlis.findDis(nPoints[0][0]//scale,nPoints[2][0]//scale)/10),1) 34 | cv2.arrowedLine(imgContours2, (nPoints[0][0][0], nPoints[0][0][1]), (nPoints[1][0][0], nPoints[1][0][1]), 35 | (255, 0, 255), 3, 8, 0, 0.05) 36 | cv2.arrowedLine(imgContours2, (nPoints[0][0][0], nPoints[0][0][1]), (nPoints[2][0][0], nPoints[2][0][1]), 37 | (255, 0, 255), 3, 8, 0, 0.05) 38 | x, y, w, h = obj[3] 39 | cv2.putText(imgContours2, '{}cm'.format(nW), (x + 30, y - 10), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1.5, 40 | (255, 0, 255), 2) 41 | cv2.putText(imgContours2, '{}cm'.format(nH), (x - 70, y + h // 2), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1.5, 42 | (255, 0, 255), 2) 43 | cv2.imshow('A4', imgContours2) 44 | 45 | img = cv2.resize(img,(0,0),None,0.5,0.5) 46 | cv2.imshow('Original',img) 47 | cv2.waitKey(1) -------------------------------------------------------------------------------- /Intermediate/Object Measurement/ReadMe.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Intermediate/Object Measurement/utlis.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | def getContours(img,cThr=[100,100],showCanny=False,minArea=1000,filter=0,draw =False): 5 | imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 6 | imgBlur = cv2.GaussianBlur(imgGray,(5,5),1) 7 | imgCanny = cv2.Canny(imgBlur,cThr[0],cThr[1]) 8 | kernel = np.ones((5,5)) 9 | imgDial = cv2.dilate(imgCanny,kernel,iterations=3) 10 | imgThre = cv2.erode(imgDial,kernel,iterations=2) 11 | if showCanny:cv2.imshow('Canny',imgThre) 12 | contours,hiearchy = cv2.findContours(imgThre,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 13 | finalCountours = [] 14 | for i in contours: 15 | area = cv2.contourArea(i) 16 | if area > minArea: 17 | peri = cv2.arcLength(i,True) 18 | approx = cv2.approxPolyDP(i,0.02*peri,True) 19 | bbox = cv2.boundingRect(approx) 20 | if filter > 0: 21 | if len(approx) == filter: 22 | finalCountours.append([len(approx),area,approx,bbox,i]) 23 | else: 24 | finalCountours.append([len(approx),area,approx,bbox,i]) 25 | finalCountours = sorted(finalCountours,key = lambda x:x[1] ,reverse= True) 26 | if draw: 27 | for con in finalCountours: 28 | cv2.drawContours(img,con[4],-1,(0,0,255),3) 29 | return img, finalCountours 30 | 31 | def reorder(myPoints): 32 | #print(myPoints.shape) 33 | myPointsNew = np.zeros_like(myPoints) 34 | myPoints = myPoints.reshape((4,2)) 35 | add = myPoints.sum(1) 36 | myPointsNew[0] = myPoints[np.argmin(add)] 37 | myPointsNew[3] = myPoints[np.argmax(add)] 38 | diff = np.diff(myPoints,axis=1) 39 | myPointsNew[1]= myPoints[np.argmin(diff)] 40 | myPointsNew[2] = myPoints[np.argmax(diff)] 41 | return myPointsNew 42 | 43 | def warpImg (img,points,w,h,pad=20): 44 | # print(points) 45 | points =reorder(points) 46 | pts1 = np.float32(points) 47 | pts2 = np.float32([[0,0],[w,0],[0,h],[w,h]]) 48 | matrix = cv2.getPerspectiveTransform(pts1,pts2) 49 | imgWarp = cv2.warpPerspective(img,matrix,(w,h)) 50 | imgWarp = imgWarp[pad:imgWarp.shape[0]-pad,pad:imgWarp.shape[1]-pad] 51 | return imgWarp 52 | 53 | def findDis(pts1,pts2): 54 | return ((pts2[0]-pts1[0])**2 + (pts2[1]-pts1[1])**2)**0.5 55 | 56 | 57 | -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/1.png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Barcode (1).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Barcode (1).gif -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Barcode (4).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Barcode (4).gif -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Barcode (5).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Barcode (5).gif -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Barnangen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Barnangen.png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Emily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Emily.png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Jhon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Jhon.png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Perfume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Perfume.png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (1).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (2).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (3).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (4).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (5).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (6).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (7).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (7).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (8).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Qr (9).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Qr (9).png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Images/Vitamin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/QrCodeBarCode/Images/Vitamin.png -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/QrBarTest.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | from pyzbar.pyzbar import decode 4 | 5 | #img = cv2.imread('1.png') 6 | cap = cv2.VideoCapture(0) 7 | cap.set(3,640) 8 | cap.set(4,480) 9 | 10 | while True: 11 | 12 | success, img = cap.read() 13 | for barcode in decode(img): 14 | myData = barcode.data.decode('utf-8') 15 | print(myData) 16 | pts = np.array([barcode.polygon],np.int32) 17 | pts = pts.reshape((-1,1,2)) 18 | cv2.polylines(img,[pts],True,(255,0,255),5) 19 | pts2 = barcode.rect 20 | cv2.putText(img,myData,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX, 21 | 0.9,(255,0,255),2) 22 | 23 | cv2.imshow('Result',img) 24 | cv2.waitKey(1) 25 | 26 | -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/QrCodeProject.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | from pyzbar.pyzbar import decode 4 | 5 | #img = cv2.imread('1.png') 6 | cap = cv2.VideoCapture(0) 7 | cap.set(3,640) 8 | cap.set(4,480) 9 | 10 | with open('myDataFile.text') as f: 11 | myDataList = f.read().splitlines() 12 | 13 | while True: 14 | 15 | success, img = cap.read() 16 | for barcode in decode(img): 17 | myData = barcode.data.decode('utf-8') 18 | print(myData) 19 | 20 | if myData in myDataList: 21 | myOutput = 'Authorized' 22 | myColor = (0,255,0) 23 | else: 24 | myOutput = 'Un-Authorized' 25 | myColor = (0, 0, 255) 26 | 27 | pts = np.array([barcode.polygon],np.int32) 28 | pts = pts.reshape((-1,1,2)) 29 | cv2.polylines(img,[pts],True,myColor,5) 30 | pts2 = barcode.rect 31 | cv2.putText(img,myOutput,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX, 32 | 0.9,myColor,2) 33 | 34 | cv2.imshow('Result',img) 35 | cv2.waitKey(1) 36 | 37 | -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/Readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Intermediate/QrCodeBarCode/myDataFile.text: -------------------------------------------------------------------------------- 1 | 111111 2 | 111112 3 | 111113 4 | 111114 5 | 111115 -------------------------------------------------------------------------------- /Intermediate/RealTime_Color_Detection.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | frameWidth = 640 5 | frameHeight = 480 6 | cap = cv2.VideoCapture(1) 7 | cap.set(3, frameWidth) 8 | cap.set(4, frameHeight) 9 | 10 | def empty(a): 11 | pass 12 | 13 | cv2.namedWindow("HSV") 14 | cv2.resizeWindow("HSV",640,240) 15 | cv2.createTrackbar("HUE Min","HSV",0,179,empty) 16 | cv2.createTrackbar("HUE Max","HSV",179,179,empty) 17 | cv2.createTrackbar("SAT Min","HSV",0,255,empty) 18 | cv2.createTrackbar("SAT Max","HSV",255,255,empty) 19 | cv2.createTrackbar("VALUE Min","HSV",0,255,empty) 20 | cv2.createTrackbar("VALUE Max","HSV",255,255,empty) 21 | 22 | while True: 23 | 24 | _, img = cap.read() 25 | imgHsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) 26 | 27 | h_min = cv2.getTrackbarPos("HUE Min","HSV") 28 | h_max = cv2.getTrackbarPos("HUE Max", "HSV") 29 | s_min = cv2.getTrackbarPos("SAT Min", "HSV") 30 | s_max = cv2.getTrackbarPos("SAT Max", "HSV") 31 | v_min = cv2.getTrackbarPos("VALUE Min", "HSV") 32 | v_max = cv2.getTrackbarPos("VALUE Max", "HSV") 33 | print(h_min) 34 | 35 | lower = np.array([h_min,s_min,v_min]) 36 | upper = np.array([h_max,s_max,v_max]) 37 | mask = cv2.inRange(imgHsv,lower,upper) 38 | result = cv2.bitwise_and(img,img, mask = mask) 39 | 40 | mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) 41 | hStack = np.hstack([img,mask,result]) 42 | #cv2.imshow('Original', img) 43 | #cv2.imshow('HSV Color Space', imgHsv) 44 | #cv2.imshow('Mask', mask) 45 | #cv2.imshow('Result', result) 46 | cv2.imshow('Horizontal Stacking', hStack) 47 | if cv2.waitKey(1) & 0xFF == ord('q'): 48 | break 49 | 50 | cap.release() 51 | cv2.destroyAllWindows() 52 | -------------------------------------------------------------------------------- /Intermediate/RealTime_Shape_Detection_Contours.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | frameWidth = 640 5 | frameHeight = 480 6 | cap = cv2.VideoCapture(0) 7 | cap.set(3, frameWidth) 8 | cap.set(4, frameHeight) 9 | 10 | def empty(a): 11 | pass 12 | 13 | cv2.namedWindow("Parameters") 14 | cv2.resizeWindow("Parameters",640,240) 15 | cv2.createTrackbar("Threshold1","Parameters",23,255,empty) 16 | cv2.createTrackbar("Threshold2","Parameters",20,255,empty) 17 | cv2.createTrackbar("Area","Parameters",5000,30000,empty) 18 | 19 | def stackImages(scale,imgArray): 20 | rows = len(imgArray) 21 | cols = len(imgArray[0]) 22 | rowsAvailable = isinstance(imgArray[0], list) 23 | width = imgArray[0][0].shape[1] 24 | height = imgArray[0][0].shape[0] 25 | if rowsAvailable: 26 | for x in range ( 0, rows): 27 | for y in range(0, cols): 28 | if imgArray[x][y].shape[:2] == imgArray[0][0].shape [:2]: 29 | imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale) 30 | else: 31 | imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale) 32 | if len(imgArray[x][y].shape) == 2: imgArray[x][y]= cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR) 33 | imageBlank = np.zeros((height, width, 3), np.uint8) 34 | hor = [imageBlank]*rows 35 | hor_con = [imageBlank]*rows 36 | for x in range(0, rows): 37 | hor[x] = np.hstack(imgArray[x]) 38 | ver = np.vstack(hor) 39 | else: 40 | for x in range(0, rows): 41 | if imgArray[x].shape[:2] == imgArray[0].shape[:2]: 42 | imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale) 43 | else: 44 | imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale) 45 | if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR) 46 | hor= np.hstack(imgArray) 47 | ver = hor 48 | return ver 49 | 50 | def getContours(img,imgContour): 51 | contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 52 | for cnt in contours: 53 | area = cv2.contourArea(cnt) 54 | areaMin = cv2.getTrackbarPos("Area", "Parameters") 55 | if area > areaMin: 56 | cv2.drawContours(imgContour, cnt, -1, (255, 0, 255), 7) 57 | peri = cv2.arcLength(cnt, True) 58 | approx = cv2.approxPolyDP(cnt, 0.02 * peri, True) 59 | print(len(approx)) 60 | x , y , w, h = cv2.boundingRect(approx) 61 | cv2.rectangle(imgContour, (x , y ), (x + w , y + h ), (0, 255, 0), 5) 62 | 63 | cv2.putText(imgContour, "Points: " + str(len(approx)), (x + w + 20, y + 20), cv2.FONT_HERSHEY_COMPLEX, .7, 64 | (0, 255, 0), 2) 65 | cv2.putText(imgContour, "Area: " + str(int(area)), (x + w + 20, y + 45), cv2.FONT_HERSHEY_COMPLEX, 0.7, 66 | (0, 255, 0), 2) 67 | 68 | while True: 69 | success, img = cap.read() 70 | imgContour = img.copy() 71 | imgBlur = cv2.GaussianBlur(img, (7, 7), 1) 72 | imgGray = cv2.cvtColor(imgBlur, cv2.COLOR_BGR2GRAY) 73 | threshold1 = cv2.getTrackbarPos("Threshold1", "Parameters") 74 | threshold2 = cv2.getTrackbarPos("Threshold2", "Parameters") 75 | imgCanny = cv2.Canny(imgGray,threshold1,threshold2) 76 | kernel = np.ones((5, 5)) 77 | imgDil = cv2.dilate(imgCanny, kernel, iterations=1) 78 | getContours(imgDil,imgContour) 79 | imgStack = stackImages(0.8,([img,imgCanny], 80 | [imgDil,imgContour])) 81 | cv2.imshow("Result", imgStack) 82 | if cv2.waitKey(1) & 0xFF == ord('q'): 83 | break 84 | -------------------------------------------------------------------------------- /Intermediate/TextDetection/ReadMe.md: -------------------------------------------------------------------------------- 1 | Requires Installation 2 | https://tesseract-ocr.github.io/tessdoc/Home.html 3 | -------------------------------------------------------------------------------- /Intermediate/TextDetection/TextMoreExamples.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import pytesseract 3 | import numpy as np 4 | from PIL import ImageGrab 5 | import time 6 | 7 | 8 | pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe' 9 | img = cv2.imread('1.png') 10 | img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 11 | pytesseract 12 | ############################################## 13 | ##### Image to String ###### 14 | ############################################## 15 | # print(pytesseract.image_to_string(img)) 16 | 17 | ############################################# 18 | #### Detecting Characters ###### 19 | ############################################# 20 | hImg, wImg,_ = img.shape 21 | boxes = pytesseract.image_to_boxes(img) 22 | for b in boxes.splitlines(): 23 | print(b) 24 | b = b.split(' ') 25 | print(b) 26 | x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4]) 27 | cv2.rectangle(img, (x,hImg- y), (w,hImg- h), (50, 50, 255), 2) 28 | cv2.putText(img,b[0],(x,hImg- y+25),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2) 29 | 30 | 31 | ############################################## 32 | ##### Detecting Words ###### 33 | ############################################## 34 | # #[ 0 1 2 3 4 5 6 7 8 9 10 11 ] 35 | # #['level', 'page_num', 'block_num', 'par_num', 'line_num', 'word_num', 'left', 'top', 'width', 'height', 'conf', 'text'] 36 | # boxes = pytesseract.image_to_data(img) 37 | # for a,b in enumerate(boxes.splitlines()): 38 | # print(b) 39 | # if a!=0: 40 | # b = b.split() 41 | # if len(b)==12: 42 | # x,y,w,h = int(b[6]),int(b[7]),int(b[8]),int(b[9]) 43 | # cv2.putText(img,b[11],(x,y-5),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2) 44 | # cv2.rectangle(img, (x,y), (x+w, y+h), (50, 50, 255), 2) 45 | 46 | 47 | ############################################## 48 | ##### Detecting ONLY Digits ###### 49 | ############################################## 50 | # hImg, wImg,_ = img.shape 51 | # conf = r'--oem 3 --psm 6 outputbase digits' 52 | # boxes = pytesseract.image_to_boxes(img,config=conf) 53 | # for b in boxes.splitlines(): 54 | # print(b) 55 | # b = b.split(' ') 56 | # print(b) 57 | # x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4]) 58 | # cv2.rectangle(img, (x,hImg- y), (w,hImg- h), (50, 50, 255), 2) 59 | # cv2.putText(img,b[0],(x,hImg- y+25),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2) 60 | 61 | 62 | ############################################## 63 | ##### Webcam and Screen Capture Example ###### 64 | ############################################## 65 | # cap = cv2.VideoCapture(0) 66 | # cap.set(3,640) 67 | # cap.set(4,480) 68 | # def captureScreen(bbox=(300,300,1500,1000)): 69 | # capScr = np.array(ImageGrab.grab(bbox)) 70 | # capScr = cv2.cvtColor(capScr, cv2.COLOR_RGB2BGR) 71 | # return capScr 72 | # while True: 73 | # timer = cv2.getTickCount() 74 | # _,img = cap.read() 75 | # #img = captureScreen() 76 | # #DETECTING CHARACTERES 77 | # hImg, wImg,_ = img.shape 78 | # boxes = pytesseract.image_to_boxes(img) 79 | # for b in boxes.splitlines(): 80 | # #print(b) 81 | # b = b.split(' ') 82 | # #print(b) 83 | # x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4]) 84 | # cv2.rectangle(img, (x,hImg- y), (w,hImg- h), (50, 50, 255), 2) 85 | # cv2.putText(img,b[0],(x,hImg- y+25),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2) 86 | # fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer); 87 | # #cv2.putText(img, str(int(fps)), (75, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (20,230,20), 2); 88 | # cv2.imshow("Result",img) 89 | # cv2.waitKey(1) 90 | # 91 | # 92 | 93 | cv2.imshow('img', img) 94 | cv2.waitKey(0) 95 | -------------------------------------------------------------------------------- /Intermediate/TextDetection/TextSimple.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import pytesseract 3 | import numpy as np 4 | from PIL import ImageGrab 5 | import time 6 | 7 | 8 | pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe' 9 | img = cv2.imread('1.png') 10 | img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 11 | 12 | ############################################# 13 | #### Detecting Characters ###### 14 | ############################################# 15 | hImg, wImg,_ = img.shape 16 | boxes = pytesseract.image_to_boxes(img) 17 | for b in boxes.splitlines(): 18 | print(b) 19 | b = b.split(' ') 20 | print(b) 21 | x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4]) 22 | cv2.rectangle(img, (x,hImg- y), (w,hImg- h), (50, 50, 255), 2) 23 | cv2.putText(img,b[0],(x,hImg- y+25),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2) 24 | 25 | 26 | cv2.imshow('img', img) 27 | cv2.waitKey(0) 28 | -------------------------------------------------------------------------------- /Intermediate/TextDetection/oem.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/TextDetection/oem.PNG -------------------------------------------------------------------------------- /Intermediate/TextDetection/psm.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Intermediate/TextDetection/psm.PNG -------------------------------------------------------------------------------- /Intermediate/objectTracking.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | ############### Tracker Types ##################### 4 | 5 | #tracker = cv2.TrackerBoosting_create() 6 | #tracker = cv2.TrackerMIL_create() 7 | #tracker = cv2.TrackerKCF_create() 8 | #tracker = cv2.TrackerTLD_create() 9 | #tracker = cv2.TrackerMedianFlow_create() 10 | #tracker = cv2.TrackerCSRT_create() 11 | tracker = cv2.TrackerMOSSE_create() 12 | 13 | ######################################################## 14 | 15 | 16 | cap = cv2.VideoCapture(1) 17 | # TRACKER INITIALIZATION 18 | success, frame = cap.read() 19 | bbox = cv2.selectROI("Tracking",frame, False) 20 | tracker.init(frame, bbox) 21 | 22 | 23 | def drawBox(img,bbox): 24 | x, y, w, h = int(bbox[0]), int(bbox[1]), int(bbox[2]), int(bbox[3]) 25 | cv2.rectangle(img, (x, y), ((x + w), (y + h)), (255, 0, 255), 3, 3 ) 26 | cv2.putText(img, "Tracking", (100, 75), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2) 27 | 28 | 29 | while True: 30 | 31 | timer = cv2.getTickCount() 32 | success, img = cap.read() 33 | success, bbox = tracker.update(img) 34 | 35 | if success: 36 | drawBox(img,bbox) 37 | else: 38 | cv2.putText(img, "Lost", (100, 75), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 39 | 40 | cv2.rectangle(img,(15,15),(200,90),(255,0,255),2) 41 | cv2.putText(img, "Fps:", (20, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,0,255), 2); 42 | cv2.putText(img, "Status:", (20, 75), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 0, 255), 2); 43 | 44 | 45 | fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer); 46 | if fps>60: myColor = (20,230,20) 47 | elif fps>20: myColor = (230,20,20) 48 | else: myColor = (20,20,230) 49 | cv2.putText(img,str(int(fps)), (75, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.7, myColor, 2); 50 | 51 | cv2.imshow("Tracking", img) 52 | if cv2.waitKey(1) & 0xff == ord('q'): 53 | break 54 | 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # OPENCV PYTHON TUTORIALS FOR BEGINNERS 4 |
5 | 6 | 7 | # Single Video Course 8 | 9 | |Topic|Image|Video|Description| 10 | |:----:|:----:|:----:|:----:| 11 | | [Learn OpenCV in 3 Hours](https://github.com/murtazahassan/Learn-OpenCV-in-3-hours)| |[Watch Now](https://youtu.be/WQeoO7MI0Bs) | Learn Opencv in 3 hours using Python. 3 Example Projects included.
| 12 | 13 | 14 | 15 | # Basics 16 | 17 | |Topic|Image|Video|Description| 18 | |:----:|:----:|:----:|:----:| 19 | | [How to Install OpenCV Win/Mac](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/edit/master/Basics/Intsall.py)| |[Watch Now](https://www.youtube.com/watch?v=CJXIjApHYVs&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF) | Pyhton and Opencv install and testing.
| 20 | | [How to Read Image-Video-Webcam](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/Read_Image_Video_Webcam.py)| |[Watch Now](https://www.youtube.com/watch?v=gH_kQZo-NSk&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=2) | Learn how to read images videos and webcam.
| 21 | | [5 Must Know OpenCV Basic Functions](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/5_Must_Know_OpenCV_Functions.py)| |[Watch Now](https://www.youtube.com/watch?v=7kHhz7nkpBw&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=3) | 5 Must know opencv functions for beginners. Gray Scale, Blur, Edge Detection, Dialation and Erosion.
| 22 | | [How to Crop and Resize Images](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/Crop_Resize_Images.py)| |[Watch Now](https://www.youtube.com/watch?v=GiVVCu7l34A&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=4) | How to crop and resize and iamge. Resize could be used to scale up or scale down an image where cropping can be used to get a part of the image.
| 23 | | [How to Draw Shapes and Text](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/Draw_Shapes_Text.py)| |[Watch Now](https://www.youtube.com/watch?v=wrfKPiy9za8&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=5) | Learn to create blank images along with how to draw Lines, rectangles, circles and custom text.
| 24 | | [Joining Multiple Images to Display](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/Joining_Multiple_Images_To_Display.py)| |[Watch Now](https://www.youtube.com/watch?v=Wv0PSs0dmVI&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=6) | Join multiple images together as one image for easy visualization of the workflow. Learn how to do it for smaller noumber of images and how it could be scaled up to have several iamges in the same image.
| 25 | | [Warp Prespective/BirdView](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/Warp_Prespective.py)| |[Watch Now](https://www.youtube.com/watch?v=Tm_7fGolVGE&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=7) | Learn how to creat a warp prespective of a selected area of an image using fixed points.
| 26 | | [Detecting Clicks on Images](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/Detecting_Clicks_On_Images.py)| |[Watch Now](https://www.youtube.com/watch?v=DaQoorJQSZQ&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=8) |How to detect clicks on images and how to use these points to create a warp prespective.
| 27 | | [Screen Capture](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Basics/screenCap.py)| |[--]() |How to capture live feed of a screen that can be used with opencv functions.
| 28 | |___________________|______________________________|__________| ____________________________ 29 | 30 | 31 | # Intermidiate 32 |
33 | 34 | 35 | |Topic|Image|Video|Description| 36 | |:----:|:----:|:----:|:----:| 37 | | [Real Time Color Detection (Webcam)](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Intermediate/RealTime_Color_Detection.py)| |[Watch Now](https://www.youtube.com/watch?v=Tj4zEX_pdUg&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=9) | In this video we will learn how to detect any color in an image using the HSV space with the help of opencv Trackbars. We will also stack the images together to make the workflow smoother.
| 38 | | [Real Time Shape Detection using Contours](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Intermediate/RealTime_Shape_Detection_Contours.py)| |[Watch Now](https://www.youtube.com/watch?v=Fchzk1lDt7Q&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=10) | In this video we will learn how to detect shapes of objects by finding their contours. Contours are basically outline that bound the shape or form of an object. So we will be detecting multiple shapes and how many corners points each shape has along with its area .
| 39 | | [Tracking Objects](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/blob/master/Intermediate/objectTracking.py)| |[Watch Now](https://youtu.be/1FJWXOO1SRI) | In this video we are going to learn object tracking. We will use our mouse to select an object and track it using different methods that opencv has to offer. This is a fairly simple tutorial so it should be easy to follow.
| 40 | | [Custom Obejct Detection using HaarCascade](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/tree/master/Intermediate/Custom%20Object%20Detection)| |[Watch Now](https://www.youtube.com/watch?v=dZ4itBvIjVY&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=11) | Object Detection using the Haar cascade. We will learn how to run pre-trained models and how to collect data for custom Objects. Later we will train using this data and create an Xml file for deploying
| 41 | | [QRcode and BarCode Detection](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/tree/master/Intermediate/QrCodeBarCode)| |[Watch Now](https://www.youtube.com/watch?v=SrZuwM705yE&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=16&t=0s) | Learn how to detect QRCode and BarCode in an image using OpenCV
| 42 | | [Text Detection OCR ](https://github.com/murtazahassan/OpenCV-Python-Tutorials-for-Beginners/tree/master/Intermediate/TextDetection)| |[Watch Now](https://youtu.be/6DjFscX4I_c) | Learn how to detect Text in images and use it in openCV
| 43 | |___________________|______________________________|__________| ____________________________ 44 | 45 | 46 | # Projects 47 |
48 | 49 | 50 | |Topic|Image|Video|Description| 51 | |:----:|:----:|:----:|:----:| 52 | | [Gesture Controlled Robot Hand](https://github.com/murtazahassan/Robot-Arm-Gesture-Control)| |[Watch Now](https://youtu.be/gmz7eOB-tCg) | This is a step by step guide on how to build a Robot Arm / Hand that can be controlled with gestures.
| 53 | | [Object Tracking with Drone](https://github.com/murtazahassan/Tello-Object-Tracking)| |[Watch Now](https://youtu.be/vDOkUHNdmKs) | In this video we will learn how to program a drone to move around using python. We will also learn how to get the camera feed from this drone and run OpenCV functions on it . As an example we will detect an object and make the drone follow it around.
| 54 | | [Document Scanner](https://github.com/murtazahassan/Document-Scanner)| |[Watch Now](https://www.youtube.com/watch?v=ON_JubFRw8M&feature=youtu.be) | In this video we are going to create a simple document scanner using opencv. We will learn how to run this in real time and how we can save these images by pressing just a button on the keyboard.
| 55 | | [Optical Mark Recognition](https://github.com/murtazahassan/Optical-Mark-Recognition-OPENCV)| |[Watch Now](https://youtu.be/0IqCOPlGBTs) | In this video we are going to learn how to create Optical Mark recognition algorithm in python using opencv . We will write the code from scratch going step by step while discussing the details of each line. We will use the webcam to automatically find the grades of MCQs.
| 56 | | [Object Measurement](https://github.com/murtazahassan/Real-Time-Object-Measurement-)| |[Watch Now](https://youtu.be/aHW3Hl0XX1U) | Learn how to perform object measurement using OpenCV and Python. We will use an A4 paper as our guide and find the width and height of objects placed in this region.
| 57 | | [Face Recognition](https://github.com/murtazahassan/Face-Recognition)| |[Watch Now](https://youtu.be/sz25xxF_AVE) | Learn how to perform Facial recognition with high accuracy. We will first briefly go through the theory and learn the basic implementation. Then we will create an Attendance project that will use webcam to detect faces and record the attendance live in an excel sheet.
| 58 | | [Angle Finder](https://github.com/murtazahassan/Angle-Finder)| |[Watch Now](https://www.youtube.com/watch?v=NmRt9kdUefk&list=PLMoSUbG1Q_r8vFXoAZPKyj-WLcD2aGoNZ) | Learn how to create an angle finder project. We will first define two lines using mouse clicks and then find the angle between theses lines using simple mathematics.
| 59 | | [Drone Face Tracking](https://github.com/murtazahassan/Drone-Face-Tracking)| |[Watch Now](https://www.youtube.com/playlist?list=PLMoSUbG1Q_r8ib2U4AbC_mPTsa-u9HoP_) | Learn how to program a drone to move around using python. We will also learn how to get the camera feed from this drone and run OpenCV functions on it . As an example we will detect a face and make the drone follow it around.
| 60 | 61 | 62 | 63 | # Notes 64 |
65 | 66 | |Index|Comment| 67 | |:---|:---| 68 | |1.|[Recommended IDE: PyCharm Community edition](https://www.jetbrains.com/pycharm/download/)| 69 | -------------------------------------------------------------------------------- /Resources/chess.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Resources/chess.jpg -------------------------------------------------------------------------------- /Resources/lena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Resources/lena.png -------------------------------------------------------------------------------- /Resources/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Resources/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Resources/shapes.png -------------------------------------------------------------------------------- /Resources/testVideo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/Resources/testVideo.mp4 -------------------------------------------------------------------------------- /thumbnails/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/0.jpg -------------------------------------------------------------------------------- /thumbnails/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/1.jpg -------------------------------------------------------------------------------- /thumbnails/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/10.png -------------------------------------------------------------------------------- /thumbnails/11.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/11.PNG -------------------------------------------------------------------------------- /thumbnails/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/2.jpg -------------------------------------------------------------------------------- /thumbnails/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/3.jpg -------------------------------------------------------------------------------- /thumbnails/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/4.jpg -------------------------------------------------------------------------------- /thumbnails/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/5.jpg -------------------------------------------------------------------------------- /thumbnails/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/6.jpg -------------------------------------------------------------------------------- /thumbnails/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/7.jpg -------------------------------------------------------------------------------- /thumbnails/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/8.jpg -------------------------------------------------------------------------------- /thumbnails/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/9.jpg -------------------------------------------------------------------------------- /thumbnails/QrCode.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/QrCode.jpg -------------------------------------------------------------------------------- /thumbnails/ScreenCap.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/ScreenCap.gif -------------------------------------------------------------------------------- /thumbnails/TextDetection.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/murtazahassan/OpenCV-Python-Tutorials-and-Projects/1b3123aac0b315f7e84e757bb380d494b0bbd048/thumbnails/TextDetection.gif --------------------------------------------------------------------------------