Skip to main content

Fast multitemplate matching with support for different sizes using numexpr / cupy / fftw / scipy / multiprocessing

Project description

Fast multitemplate matching with support for different sizes using numexpr / cupy / fftw / scipy / multiprocessing

pip install tmplmatching

Advantages:

  • Uses a tuned match_template algorithm from scipy (numexpr instead of numpy / different fftconvolve algorithms)
  • very fast fftconvolve function using pyfftw (alternatively cupy and scipy.signal.fftconvolve)
  • Multiprocessing using RawArray to speed it up / save memory
  • Template matching with multiple sizes
  • Results as a pandas DataFrame for further filtering
  • Adjustable accepted R, G, B difference
  • Finding the best matches among multiple matches

Tested against Windows 10 / Python 3.10 / Anaconda - should work on MacOS / Linux

Selecting

pic1

Locating

pic2

import cv2
from tmplmatching import TemplateMatching

if __name__ == "__main__": # important - since it uses multiprocessing, this line is mandatory!
    ############################################################
    # Step 1:
    # Initialize TemplateMatching
    self = TemplateMatching(screenshot_buffer=10, use_cupy=False)

    ############################################################
    # Step 2:
    # Create a class list in ALPHABETICAL order, put one class per line and save the file:
    # Here is an example:
    """
    # social_media_icons.txt
    facebookicon
    tiktokicon
    whatsappicon
    youtubeicon
    """
    # and save it as a TXT file
    ############################################################
    # Step 3:
    # Start annotation tool (https://github.com/drainingsun/ybat - included in this package) which captures a screenshot, and shows the path to the screenshot (has to be done only once)
    self.start_annotation_tool()
    ############################################################
    # Step 4:
    # open the text file and the screenshot (or any other image) in the annotation tool, and select the items you want to find
    ############################################################
    # Step 5:
    # Click on "Save COCO" when you are done
    # Copy the path of the downloaded zip file and the path of the image
    # "C:\Users\hansc\Downloads\bboxes_coco.zip"
    ############################################################
    # Step 6:
    # Once the annotation is done, extract and resize items based on annotations (has to be done only once)
    self.extract_images_from_annotations(
         folder=r"c:\socialmediaicons_different_sizes",  # The folder to save extracted templates
         zipfile=r"C:\Users\hansc\Downloads\bboxes_coco.zip",  # Path to saved annotations
         screenshot=r"C:\Users\hansc\AppData\Local\Temp\tmp1ak8brdw.png",  # The picture that you used in self.start_annotation_tool()
         min_percentage=10,  # Defines variations for each template
         max_percentage=200,
         interpolation=cv2.INTER_LANCZOS4 # recommended for the best results
     )
    ############################################################
    # Step 7:    
    # Load template images with specified size ranges
    self.load_needle_images(
        folder=r"c:\socialmediaicons_different_sizes",
        min_percentage=25,
        max_percentage=35,
    )
    ############################################################
    # Step 8:   
    df = self.take_screenshot_and_find_needles(
        minimum_match=0.60,  # Minimum threshold for template matching - the lower you go, the longer the calculations takes
        monitor=1,  # 0 for all monitors
        percent=30,  # Resize screenshots before matching (results are recalculated to the original size)
        processes=5,  # Number of CPUs used for multiprocessing
        interpolation=cv2.INTER_LANCZOS4,  # Interpolation method for resizing the screenshot - Use cv2.INTER_LANCZOS4 for the best results (but a little slower than cv2.INTER_AREA)
        max_diff_r=80,  # Maximal accepted RGB difference filter to reduce false positives
        max_diff_g=80,
        max_diff_b=80,
        max_color_difference_factor=2, 

    )
    
    ima = self.draw_results(df)  # Pass the DataFrame to draw the results
    cv2.imwrite(r"c:\socialmediaiconsmatching.png", ima)
    # --------------------------------------
    # If you don't want to take a screenshot and want to pass an existing picture, use: 
    df2 = self.find_needles(
        haystack=r"C:\Users\hansc\AppData\Local\Temp\tmp1ak8brdw.png", # accepts almost all image formats (base64, file path, urls, PIL, numpy, bytes ...)
        percent=30,
        minimum_match=0.7,
        processes=4,
        max_diff_r=30,
        max_diff_g=30,
        max_diff_b=30,
        max_color_difference_factor=2,
        interpolation=cv2.INTER_LANCZOS4,
    )
    ima2 = self.draw_results(
        df2, haystack=r"C:\Users\hansc\AppData\Local\Temp\tmp1ak8brdw.png"
    )  # Pass the DataFrame to draw the last results
    cv2.imwrite("c:\\socialmediaiconsmatching2.png", ima2)
    
                                                                                                                                                                                                                                                                                                                             aa_intersecting  aa_r0  aa_g0  aa_b0
0   0.963882       1323        316     1403      393       3      1323       316        80         76   237   155    69  c:\socialmediaicons_different_sizes\facebookicon___0___000021___030.png  facebookicon         0        21             30  ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (315, 99, 334, 117), (315, 100, 334, 118), (314, 98, 334, 117), (314, 99, 334, 118), (314, 100, 334, 119), (314, 98, 334, 118), (314, 99, 334, 119), (265, 153, 283, 170), (265, 152, 283, 170), (265, 153, 283, 171), (291, 153, 309, 171), (494, 258, 512, 276), (494, 259, 512, 277), (264, 152, 283, 171), (290, 152, 309, 171), (264, 153, 283, 172), (289, 153, 308, 172), (290, 153, 309, 172), (493, 257, 512, 276), (493, 258, 512, 277), (263, 152, 283, 172), (289, 152, 309, 172), (290, 152, 310, 172), (289, 153, 309, 173), (459, 95, 480, 116), (486, 95, 507, 116), (486, 96, 507, 117), (263, 151, 284, 172), (289, 151, 310, 172), (289, 152, 310, 173), (458, 94, 480, 115), (458, 95, 480, 116), (485, 95, 507, 116), (486, 95, 508, 116), (485, 96, 507, 117), (486, 96, 508, 117), (457, 94, 479, 116), (458, 94, 480, 116), (486, 94, 508, 116), (458, 95, 480, 117), (485, 95, 507, 117), (486, 95, 508, 117), (487, 95, 509, 117), (485, 96, 507, 118), (486, 96, 508, 118), (456, 94, 479, 117), (457, 94, 480, 117), (485, 94, 508, 117), (486, 94, 509, 117), (457, 95, 480, 118), (484, 95, 507, 118), (485, 95, 508, 118), (486, 95, 509, 118), (456, 93, 480, 117), (484, 93, 508, 117), (485, 93, 509, 117), (455, 94, 479, 118), (456, 94, 480, 118), (484, 94, 508, 118), (485, 94, 509, 118), (484, 95, 508, 119), (485, 95, 509, 119), (427, 123, 451, 147), (455, 93, 480, 117), (484, 93, 509, 117), (455, 94, 480, 118), (483, 94, 508, 118), (484, 94, 509, 118), (485, 94, 510, 118), ...)    237    161     78
1   0.763606       1053        330     1110      386       2      1053       330        56         56   237   155    69  c:\socialmediaicons_different_sizes\facebookicon___0___000013___022.png  facebookicon         0        13             22                        ((518, 285, 530, 296), (295, 152, 307, 164), (517, 280, 530, 293), (517, 279, 531, 293), (517, 280, 531, 294), (516, 279, 531, 293), (516, 280, 531, 294), (516, 279, 532, 294), (516, 278, 532, 294), (516, 279, 532, 295), (515, 278, 532, 295), (399, 98, 418, 116), (400, 98, 419, 116), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (398, 98, 418, 117), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (398, 98, 418, 118), (399, 98, 419, 118), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), (396, 94, 422, 119), (395, 95, 421, 120), (396, 95, 422, 120), (395, 92, 422, 118), (395, 93, 422, 119), (395, 94, 422, 120), (395, 95, 422, 121), (395, 92, 423, 119), (395, 93, 423, 120), (265, 153, 283, 170), (265, 152, 283, 170), (265, 153, 283, 171), (291, 153, 309, 171), (494, 258, 512, 276), (494, 259, 512, 277), (264, 152, 283, 171), (290, 152, 309, 171), (264, 153, 283, 172), (289, 153, 308, 172), (290, 153, 309, 172), (493, 257, 512, 276), (493, 258, 512, 277), (263, 152, 283, 172), (289, 152, 309, 172), (290, 152, 310, 172), (289, 153, 309, 173), (459, 95, 480, 116), ...)    218    149     98
2   0.666532       1720        930     1773      980       2      1056       333        53         50   237   154    66  c:\socialmediaicons_different_sizes\facebookicon___0___000011___020.png  facebookicon         0        11             20                                ((319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (316, 99, 333, 116), (316, 100, 333, 117), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), (396, 94, 422, 119), (395, 95, 421, 120), (396, 95, 422, 120), (395, 92, 422, 118), (395, 93, 422, 119), (395, 94, 422, 120), (395, 95, 422, 121), (395, 92, 423, 119), (395, 93, 423, 120), (265, 153, 283, 170), ...)    160    116     96
3   0.897434       1616        313     1696      393       2      1616       313        80         80    68    60    73    c:\socialmediaicons_different_sizes\tiktokicon___0___000022___031.png    tiktokicon         0        22             31                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)     79     71     82
4   0.765243        966        509     1030      573       2       966       509        63         63    67    59    68    c:\socialmediaicons_different_sizes\tiktokicon___0___000016___025.png    tiktokicon         0        16             25                        ((518, 285, 530, 296), (319, 102, 331, 114), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), (396, 94, 422, 119), ...)     83     83     83
5   0.922466       1516        409     1596      490       3      1516       409        80         80   112   220    85  c:\socialmediaicons_different_sizes\whatsappicon___0___000022___031.png  whatsappicon         0        22             31                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)    123    221     99
6   0.715838        873        416      943      486       2       873       416        70         70   111   219    84  c:\socialmediaicons_different_sizes\whatsappicon___0___000018___027.png  whatsappicon         0        18             27                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)     96    169    103
7   0.951082       1420        409     1503      490       3      1420       409        83         80    81    81   249   c:\socialmediaicons_different_sizes\youtubeicon___0___000022___031.png   youtubeicon         0        22             31                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)     88     89    249
8   0.918379        963        333     1030      400       3       963       333        66         66    79    80   249   c:\socialmediaicons_different_sizes\youtubeicon___0___000016___025.png   youtubeicon         0        16             25                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)    100    100    223
9   0.852620       1573        856     1643      923       2       960       333        70         66    79    79   249   c:\socialmediaicons_different_sizes\youtubeicon___0___000017___026.png   youtubeicon         0        17             26                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)    133    131    223
10  0.777062       1576        860     1639      923       2      1576       860        63         63    76    76   250   c:\socialmediaicons_different_sizes\youtubeicon___0___000015___024.png   youtubeicon         0        15             24                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)    120    119    220
11  0.697920       1380        840     1423      883       2      1380       840        43         43    72    72   251   c:\socialmediaicons_different_sizes\youtubeicon___0___000008___017.png   youtubeicon         0         8             17                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)    135    126    245
12  0.675960       1573        856     1646      926       2       960       330        73         70    81    81   249   c:\socialmediaicons_different_sizes\youtubeicon___0___000018___027.png   youtubeicon         0        18             27                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)    135    134    223
13  0.674136       1576        860     1636      919       2       969       336        60         60    79    80   250   c:\socialmediaicons_different_sizes\youtubeicon___0___000014___023.png   youtubeicon         0        14             23                       ((518, 285, 530, 296), (319, 102, 331, 114), (295, 152, 307, 164), (318, 101, 331, 114), (517, 280, 530, 293), (318, 100, 332, 114), (317, 101, 331, 115), (318, 101, 332, 115), (517, 279, 531, 293), (517, 280, 531, 294), (317, 100, 332, 114), (316, 101, 331, 115), (317, 101, 332, 115), (516, 279, 531, 293), (516, 280, 531, 294), (316, 100, 332, 115), (317, 100, 333, 115), (316, 101, 332, 116), (516, 279, 532, 294), (317, 99, 333, 115), (316, 100, 332, 116), (317, 100, 333, 116), (316, 101, 332, 117), (516, 278, 532, 294), (516, 279, 532, 295), (316, 99, 333, 116), (316, 100, 333, 117), (515, 278, 532, 295), (315, 99, 333, 116), (316, 99, 334, 116), (315, 100, 333, 117), (399, 98, 418, 116), (400, 98, 419, 116), (315, 99, 334, 117), (315, 100, 334, 118), (399, 96, 419, 115), (398, 97, 418, 116), (399, 97, 419, 116), (314, 98, 334, 117), (398, 98, 418, 117), (314, 99, 334, 118), (314, 100, 334, 119), (398, 96, 418, 116), (399, 96, 419, 116), (398, 97, 418, 117), (399, 97, 419, 117), (314, 98, 334, 118), (398, 98, 418, 118), (399, 98, 419, 118), (314, 99, 334, 119), (398, 95, 419, 116), (399, 95, 420, 116), (397, 96, 418, 117), (398, 96, 419, 117), (399, 96, 420, 117), (398, 97, 419, 118), (399, 97, 420, 118), (397, 95, 419, 116), (398, 95, 420, 116), (397, 96, 419, 117), (398, 96, 420, 117), (397, 97, 419, 118), (398, 97, 420, 118), (397, 94, 420, 116), (398, 94, 421, 116), (396, 95, 419, 117), (397, 95, 420, 117), (398, 95, 421, 117), (396, 96, 419, 118), (397, 96, 420, 118), (398, 96, 421, 118), (397, 97, 420, 119), (397, 93, 421, 116), (396, 94, 420, 117), (397, 94, 421, 117), (396, 95, 420, 118), (397, 95, 421, 118), (398, 95, 422, 118), (396, 96, 420, 119), (397, 96, 421, 119), (396, 93, 420, 117), (397, 93, 421, 117), (396, 94, 420, 118), (397, 94, 421, 118), (396, 95, 420, 119), (397, 95, 421, 119), (396, 96, 420, 120), (397, 96, 421, 120), (396, 93, 421, 117), (395, 94, 420, 118), (396, 94, 421, 118), (397, 94, 422, 118), (395, 95, 420, 119), (396, 95, 421, 119), (397, 95, 422, 119), (396, 96, 421, 120), (396, 92, 422, 117), (395, 93, 421, 118), (396, 93, 422, 118), (395, 94, 421, 119), ...)    126    125    221    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tmplmatching-0.11.tar.gz (143.6 kB view hashes)

Uploaded Source

Built Distribution

tmplmatching-0.11-py3-none-any.whl (137.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page