tmplmatching 0.12
Fast multitemplate matching with support for different sizes using numexpr / cupy / fftw / scipy / multiprocessing
License: MIT
Keywords: template,matching


# 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](https://github.com/hansalemaos/screenshots/blob/main/multitemplate/tag.png?raw=true)

## Locating 

![pic2](https://github.com/hansalemaos/screenshots/blob/main/multitemplate/results.png?raw=true)

```python
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    
```