You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/pa/5-retail/lessons/2-check-stock-device/single-board-computer-count...

17 KiB

ਆਪਣੇ IoT ਡਿਵਾਈਸ ਤੋਂ ਸਟਾਕ ਗਿਣੋ - ਵਰਚੁਅਲ IoT ਹਾਰਡਵੇਅਰ ਅਤੇ ਰਾਸਪਬੈਰੀ ਪਾਈ

ਪੇਸ਼ਗੂਈਆਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੇ組ਮਿਲਨ ਨੂੰ ਇੱਕ ਚਿੱਤਰ ਵਿੱਚ ਸਟਾਕ ਗਿਣਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦਿਖਾਓ

ਇੱਕ ਮਦਦਗਾਰ ਡੀਬੱਗਿੰਗ ਕਦਮ ਵਜੋਂ, ਤੁਸੀਂ ਸਿਰਫ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ ਪ੍ਰਿੰਟ ਹੀ ਨਹੀਂ ਕਰ ਸਕਦੇ, ਬਲਕਿ ਉਹਨਾਂ ਨੂੰ ਉਸ ਚਿੱਤਰ 'ਤੇ ਖਿੱਚ ਸਕਦੇ ਹੋ ਜੋ ਡਿਸਕ 'ਤੇ ਲਿਖਿਆ ਗਿਆ ਸੀ ਜਦੋਂ ਇੱਕ ਚਿੱਤਰ ਕੈਪਚਰ ਕੀਤਾ ਗਿਆ ਸੀ।

ਟਾਸਕ - ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਪ੍ਰਿੰਟ ਕਰੋ

  1. ਯਕੀਨੀ ਬਣਾਓ ਕਿ stock-counter ਪ੍ਰੋਜੈਕਟ VS Code ਵਿੱਚ ਖੁੱਲ੍ਹਾ ਹੈ, ਅਤੇ ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ ਤਾਂ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਐਕਟੀਵੇਟ ਕੀਤਾ ਹੋਵੇ।

  2. for ਲੂਪ ਵਿੱਚ print ਸਟੇਟਮ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਬਦਲੋ ਤਾਂ ਜੋ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ ਕਨਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਕੀਤਾ ਜਾ ਸਕੇ:

    print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%\t{prediction.bounding_box}')
    
  3. ਐਪ ਚਲਾਓ ਅਤੇ ਕੈਮਰਾ ਨੂੰ ਸ਼ੈਲਫ 'ਤੇ ਕੁਝ ਸਟਾਕ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੋ। ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਕਨਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ 0-1 ਦੇ ਵੈਲਿਊਜ਼ ਲਈ left, top, width ਅਤੇ height ਸ਼ਾਮਲ ਹਨ।

    pi@raspberrypi:~/stock-counter $ python3 app.py 
    tomato paste:   33.42%  {'additional_properties': {}, 'left': 0.3455171, 'top': 0.09916268, 'width': 0.14175442, 'height': 0.29405564}
    tomato paste:   34.41%  {'additional_properties': {}, 'left': 0.48283678, 'top': 0.10242918, 'width': 0.11782813, 'height': 0.27467814}
    tomato paste:   31.25%  {'additional_properties': {}, 'left': 0.4923783, 'top': 0.35007596, 'width': 0.13668466, 'height': 0.28304994}
    tomato paste:   31.05%  {'additional_properties': {}, 'left': 0.36416405, 'top': 0.37494493, 'width': 0.14024884, 'height': 0.26880276}
    

ਟਾਸਕ - ਚਿੱਤਰ 'ਤੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਖਿੱਚੋ

  1. Pip ਪੈਕੇਜ Pillow ਚਿੱਤਰਾਂ 'ਤੇ ਖਿੱਚਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਸਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡ ਨਾਲ ਇੰਸਟਾਲ ਕਰੋ:

    pip3 install pillow
    

    ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ ਐਕਟੀਵੇਟ ਕੀਤੇ ਗਏ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਤੋਂ ਚਲਾਇਆ ਜਾਵੇ।

  2. app.py ਫਾਈਲ ਦੇ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਇੰਪੋਰਟ ਸਟੇਟਮ ਸ਼ਾਮਲ ਕਰੋ:

    from PIL import Image, ImageDraw, ImageColor
    

    ਇਹ ਚਿੱਤਰ ਨੂੰ ਸੋਧਣ ਲਈ ਲੋੜੀਂਦਾ ਕੋਡ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ।

  3. app.py ਫਾਈਲ ਦੇ ਅੰਤ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:

    with Image.open('image.jpg') as im:
        draw = ImageDraw.Draw(im)
    
        for prediction in predictions:
            scale_left = prediction.bounding_box.left
            scale_top = prediction.bounding_box.top
            scale_right = prediction.bounding_box.left + prediction.bounding_box.width
            scale_bottom = prediction.bounding_box.top + prediction.bounding_box.height
    
            left = scale_left * im.width
            top = scale_top * im.height
            right = scale_right * im.width
            bottom = scale_bottom * im.height
    
            draw.rectangle([left, top, right, bottom], outline=ImageColor.getrgb('red'), width=2)
    
        im.save('image.jpg')
    

    ਇਹ ਕੋਡ ਪਹਿਲਾਂ ਸੇਵ ਕੀਤੇ ਚਿੱਤਰ ਨੂੰ ਸੋਧਣ ਲਈ ਖੋਲ੍ਹਦਾ ਹੈ। ਇਹ ਪੇਸ਼ਗੂਈਆਂ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ ਲੂਪ ਕਰਦਾ ਹੈ ਅਤੇ 0-1 ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਵੈਲਿਊਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੇਠਾਂ ਸੱਜੇ ਕੋਆਰਡੀਨੇਟ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ। ਇਹਨਾਂ ਨੂੰ ਚਿੱਤਰ ਦੇ ਮਾਪਾਂ ਨਾਲ ਗੁਣਾ ਕਰਕੇ ਚਿੱਤਰ ਕੋਆਰਡੀਨੇਟ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜੇ left ਵੈਲਿਊ 0.5 ਹੈ ਅਤੇ ਚਿੱਤਰ 600 ਪਿਕਸਲ ਚੌੜਾ ਹੈ, ਤਾਂ ਇਹ 300 ਵਿੱਚ ਬਦਲ ਜਾਵੇਗਾ (0.5 x 600 = 300)।

    ਹਰ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਨੂੰ ਲਾਲ ਲਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਿੱਤਰ 'ਤੇ ਖਿੱਚਿਆ ਜਾਂਦਾ ਹੈ। ਆਖਿਰਕਾਰ ਸੋਧਿਆ ਗਿਆ ਚਿੱਤਰ ਸੇਵ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਸਲ ਚਿੱਤਰ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰਦੇ ਹੋਏ।

  4. ਐਪ ਚਲਾਓ ਅਤੇ ਕੈਮਰਾ ਨੂੰ ਸ਼ੈਲਫ 'ਤੇ ਕੁਝ ਸਟਾਕ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੋ। ਤੁਸੀਂ VS Code ਐਕਸਪਲੋਰਰ ਵਿੱਚ image.jpg ਫਾਈਲ ਦੇਖੋਗੇ ਅਤੇ ਇਸਨੂੰ ਚੁਣ ਕੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੇਖ ਸਕਦੇ ਹੋ।

    4 ਟਮਾਟਰ ਪੇਸਟ ਦੇ ਕੈਨ, ਹਰ ਕੈਨ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ

ਸਟਾਕ ਗਿਣੋ

ਉਪਰ ਦਿੱਤੇ ਚਿੱਤਰ ਵਿੱਚ, ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਵਿੱਚ ਥੋੜ੍ਹਾ ਜਿਹਾ ਓਵਰਲੈਪ ਹੈ। ਜੇ ਇਹ ਓਵਰਲੈਪ ਬਹੁਤ ਵੱਧ ਹੋਵੇ, ਤਾਂ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਇੱਕੋ ਚੀਜ਼ ਨੂੰ ਦਰਸਾ ਸਕਦੇ ਹਨ। ਚੀਜ਼ਾਂ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਗਿਣਣ ਲਈ, ਤੁਹਾਨੂੰ ਮਹੱਤਵਪੂਰਨ ਓਵਰਲੈਪ ਵਾਲੇ ਬਾਕਸਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਪਵੇਗਾ।

ਟਾਸਕ - ਓਵਰਲੈਪ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹੋਏ ਸਟਾਕ ਗਿਣੋ

  1. Pip ਪੈਕੇਜ Shapely ਇੰਟਰਸੈਕਸ਼ਨ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਰਾਸਪਬੈਰੀ ਪਾਈ ਵਰਤ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਡਿਪੈਂਡੈਂਸੀ ਇੰਸਟਾਲ ਕਰਨੀ ਪਵੇਗੀ:

    sudo apt install libgeos-dev
    
  2. Shapely Pip ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰੋ:

    pip3 install shapely
    

    ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ ਐਕਟੀਵੇਟ ਕੀਤੇ ਗਏ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਤੋਂ ਚਲਾਇਆ ਜਾਵੇ।

  3. app.py ਫਾਈਲ ਦੇ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਇੰਪੋਰਟ ਸਟੇਟਮ ਸ਼ਾਮਲ ਕਰੋ:

    from shapely.geometry import Polygon
    

    ਇਹ ਪੋਲਿਗਨ ਬਣਾਉਣ ਲਈ ਲੋੜੀਂਦਾ ਕੋਡ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਓਵਰਲੈਪ ਦੀ ਗਣਨਾ ਕੀਤੀ ਜਾ ਸਕੇ।

  4. ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਖਿੱਚਣ ਵਾਲੇ ਕੋਡ ਤੋਂ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:

    overlap_threshold = 0.20
    

    ਇਹ ਓਵਰਲੈਪ ਦੀ ਪ੍ਰਤੀਸ਼ਤਤਾ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜਿਸ ਤੋਂ ਬਾਅਦ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਇੱਕੋ ਚੀਜ਼ ਮੰਨੇ ਜਾਂਦੇ ਹਨ। 0.20 ਇੱਕ 20% ਓਵਰਲੈਪ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।

  5. Shapely ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਓਵਰਲੈਪ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ, ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ Shapely ਪੋਲਿਗਨ ਵਿੱਚ ਬਦਲਣਾ ਪਵੇਗਾ। ਇਹ ਕਰਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ:

    def create_polygon(prediction):
        scale_left = prediction.bounding_box.left
        scale_top = prediction.bounding_box.top
        scale_right = prediction.bounding_box.left + prediction.bounding_box.width
        scale_bottom = prediction.bounding_box.top + prediction.bounding_box.height
    
        return Polygon([(scale_left, scale_top), (scale_right, scale_top), (scale_right, scale_bottom), (scale_left, scale_bottom)])
    

    ਇਹ ਪੇਸ਼ਗੂਈ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਪੋਲਿਗਨ ਬਣਾਉਂਦਾ ਹੈ।

  6. ਓਵਰਲੈਪਿੰਗ ਚੀਜ਼ਾਂ ਨੂੰ ਹਟਾਉਣ ਲਈ ਲਾਜ਼ਮੀ ਤਰਕ ਵਿੱਚ ਸਾਰੀਆਂ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੀ ਤੁਲਨਾ ਸ਼ਾਮਲ ਹੈ। ਜੇ ਕਿਸੇ ਵੀ ਜੋੜੇ ਦੀ ਪੇਸ਼ਗੂਈਆਂ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਓਵਰਲੈਪ ਥ੍ਰੈਸ਼ਹੋਲਡ ਤੋਂ ਵੱਧ ਹੋ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਇੱਕ ਪੇਸ਼ਗੂਈ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ:

    to_delete = []
    
    for i in range(0, len(predictions)):
        polygon_1 = create_polygon(predictions[i])
    
        for j in range(i+1, len(predictions)):
            polygon_2 = create_polygon(predictions[j])
            overlap = polygon_1.intersection(polygon_2).area
    
            smallest_area = min(polygon_1.area, polygon_2.area)
    
            if overlap > (overlap_threshold * smallest_area):
                to_delete.append(predictions[i])
                break
    
    for d in to_delete:
        predictions.remove(d)
    
    print(f'Counted {len(predictions)} stock items')
    

    ਓਵਰਲੈਪ Shapely ਦੇ Polygon.intersection ਮੈਥਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਗਣਨਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਇੱਕ ਪੋਲਿਗਨ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਓਵਰਲੈਪ ਹੁੰਦਾ ਹੈ। ਇਸ ਪੋਲਿਗਨ ਤੋਂ ਖੇਤਰਫਲ ਦੀ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਓਵਰਲੈਪ ਥ੍ਰੈਸ਼ਹੋਲਡ ਇੱਕ ਅਬਸੋਲਿਊਟ ਵੈਲਿਊ ਨਹੀਂ ਹੈ, ਪਰ ਇਹ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦੀ ਪ੍ਰਤੀਸ਼ਤਤਾ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਸ ਲਈ ਸਭ ਤੋਂ ਛੋਟਾ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਲੱਭਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਓਵਰਲੈਪ ਥ੍ਰੈਸ਼ਹੋਲਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਹ ਖੇਤਰਫਲ ਗਣਨਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਛੋਟੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦੇ ਓਵਰਲੈਪ ਪ੍ਰਤੀਸ਼ਤਤਾ ਥ੍ਰੈਸ਼ਹੋਲਡ ਤੋਂ ਵੱਧ ਨਹੀਂ ਹੋ ਸਕਦਾ। ਜੇ ਓਵਰਲੈਪ ਇਸ ਤੋਂ ਵੱਧ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਪੇਸ਼ਗੂਈ ਨੂੰ ਹਟਾਉਣ ਲਈ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

    ਜਦੋਂ ਇੱਕ ਪੇਸ਼ਗੂਈ ਨੂੰ ਹਟਾਉਣ ਲਈ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਮੁੜ ਜਾਂਚਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ। ਇਸ ਲਈ ਅੰਦਰੂਨੀ ਲੂਪ ਅਗਲੀ ਪੇਸ਼ਗੂਈ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਤੁਰੰਤ ਬਾਹਰ ਨਿਕਲ ਜਾਂਦਾ ਹੈ। ਤੁਸੀਂ ਇੱਕ ਲਿਸਟ ਤੋਂ ਚੀਜ਼ਾਂ ਨੂੰ ਹਟਾ ਨਹੀਂ ਸਕਦੇ ਜਦੋਂ ਤੁਸੀਂ ਇਸ 'ਤੇ ਇਟਰੇਟ ਕਰ ਰਹੇ ਹੋ। ਇਸ ਲਈ ਓਵਰਲੈਪ ਥ੍ਰੈਸ਼ਹੋਲਡ ਤੋਂ ਵੱਧ ਓਵਰਲੈਪ ਵਾਲੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ to_delete ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਆਖਿਰ ਵਿੱਚ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।

    ਆਖਿਰਕਾਰ ਸਟਾਕ ਗਿਣਤੀ ਕਨਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ IoT ਸੇਵਾ ਨੂੰ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ ਤਾਂ ਜੋ ਸਟਾਕ ਲੈਵਲ ਘੱਟ ਹੋਣ 'ਤੇ ਚੇਤਾਵਨੀ ਦਿੱਤੀ ਜਾ ਸਕੇ। ਇਹ ਸਾਰਾ ਕੋਡ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਖਿੱਚਣ ਤੋਂ ਪਹਿਲਾਂ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ ਓਵਰਲੈਪ ਤੋਂ ਬਿਨਾਂ ਸਟਾਕ ਪੇਸ਼ਗੂਈਆਂ ਨੂੰ ਜਨਰੇਟ ਕੀਤੇ ਚਿੱਤਰਾਂ 'ਤੇ ਦੇਖੋਗੇ।

    💁 ਇਹ ਓਵਰਲੈਪ ਨੂੰ ਹਟਾਉਣ ਦਾ ਬਹੁਤ ਸਧਾਰਨ ਤਰੀਕਾ ਹੈ, ਸਿਰਫ਼ ਓਵਰਲੈਪ ਵਾਲੇ ਜੋੜੇ ਵਿੱਚ ਪਹਿਲੇ ਨੂੰ ਹਟਾਉਣਾ। ਪ੍ਰੋਡਕਸ਼ਨ ਕੋਡ ਲਈ, ਤੁਸੀਂ ਇੱਥੇ ਹੋਰ ਤਰਕ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੋਗੇ, ਜਿਵੇਂ ਕਿ ਕਈ ਚੀਜ਼ਾਂ ਦੇ ਓਵਰਲੈਪ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਜਾਂ ਜੇਕਰ ਇੱਕ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦੂਜੇ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ।

  7. ਐਪ ਚਲਾਓ ਅਤੇ ਕੈਮਰਾ ਨੂੰ ਸ਼ੈਲਫ 'ਤੇ ਕੁਝ ਸਟਾਕ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੋ। ਆਉਟਪੁੱਟ ਓਵਰਲੈਪ ਥ੍ਰੈਸ਼ਹੋਲਡ ਤੋਂ ਵੱਧ ਓਵਰਲੈਪ ਤੋਂ ਬਿਨਾਂ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੀ ਗਿਣਤੀ ਦਰਸਾਏਗੀ। overlap_threshold ਵੈਲਿਊ ਨੂੰ ਸਮਾਧਾਨ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਤਾਂ ਜੋ ਪੇਸ਼ਗੂਈਆਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ ਜਾ ਸਕੇ।

💁 ਤੁਸੀਂ ਇਹ ਕੋਡ code-count/pi ਜਾਂ code-count/virtual-iot-device ਫੋਲਡਰ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ।

😀 ਤੁਹਾਡਾ ਸਟਾਕ ਕਾਊਂਟਰ ਪ੍ਰੋਗਰਾਮ ਸਫਲ ਰਿਹਾ!


ਅਸਵੀਕਰਤੀ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।