17 KiB
ਆਪਣੇ IoT ਡਿਵਾਈਸ ਤੋਂ ਸਟਾਕ ਗਿਣੋ - ਵਰਚੁਅਲ IoT ਹਾਰਡਵੇਅਰ ਅਤੇ ਰਾਸਪਬੈਰੀ ਪਾਈ
ਪੇਸ਼ਗੂਈਆਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੇ組ਮਿਲਨ ਨੂੰ ਇੱਕ ਚਿੱਤਰ ਵਿੱਚ ਸਟਾਕ ਗਿਣਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦਿਖਾਓ
ਇੱਕ ਮਦਦਗਾਰ ਡੀਬੱਗਿੰਗ ਕਦਮ ਵਜੋਂ, ਤੁਸੀਂ ਸਿਰਫ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ ਪ੍ਰਿੰਟ ਹੀ ਨਹੀਂ ਕਰ ਸਕਦੇ, ਬਲਕਿ ਉਹਨਾਂ ਨੂੰ ਉਸ ਚਿੱਤਰ 'ਤੇ ਖਿੱਚ ਸਕਦੇ ਹੋ ਜੋ ਡਿਸਕ 'ਤੇ ਲਿਖਿਆ ਗਿਆ ਸੀ ਜਦੋਂ ਇੱਕ ਚਿੱਤਰ ਕੈਪਚਰ ਕੀਤਾ ਗਿਆ ਸੀ।
ਟਾਸਕ - ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਪ੍ਰਿੰਟ ਕਰੋ
-
ਯਕੀਨੀ ਬਣਾਓ ਕਿ
stock-counter
ਪ੍ਰੋਜੈਕਟ VS Code ਵਿੱਚ ਖੁੱਲ੍ਹਾ ਹੈ, ਅਤੇ ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ ਤਾਂ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਐਕਟੀਵੇਟ ਕੀਤਾ ਹੋਵੇ। -
for
ਲੂਪ ਵਿੱਚprint
ਸਟੇਟਮ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਬਦਲੋ ਤਾਂ ਜੋ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਨੂੰ ਕਨਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਕੀਤਾ ਜਾ ਸਕੇ:print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%\t{prediction.bounding_box}')
-
ਐਪ ਚਲਾਓ ਅਤੇ ਕੈਮਰਾ ਨੂੰ ਸ਼ੈਲਫ 'ਤੇ ਕੁਝ ਸਟਾਕ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੋ। ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਕਨਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ 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}
ਟਾਸਕ - ਚਿੱਤਰ 'ਤੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਖਿੱਚੋ
-
Pip ਪੈਕੇਜ Pillow ਚਿੱਤਰਾਂ 'ਤੇ ਖਿੱਚਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਸਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡ ਨਾਲ ਇੰਸਟਾਲ ਕਰੋ:
pip3 install pillow
ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ ਐਕਟੀਵੇਟ ਕੀਤੇ ਗਏ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਤੋਂ ਚਲਾਇਆ ਜਾਵੇ।
-
app.py
ਫਾਈਲ ਦੇ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਇੰਪੋਰਟ ਸਟੇਟਮ ਸ਼ਾਮਲ ਕਰੋ:from PIL import Image, ImageDraw, ImageColor
ਇਹ ਚਿੱਤਰ ਨੂੰ ਸੋਧਣ ਲਈ ਲੋੜੀਂਦਾ ਕੋਡ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ।
-
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)।
ਹਰ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਨੂੰ ਲਾਲ ਲਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚਿੱਤਰ 'ਤੇ ਖਿੱਚਿਆ ਜਾਂਦਾ ਹੈ। ਆਖਿਰਕਾਰ ਸੋਧਿਆ ਗਿਆ ਚਿੱਤਰ ਸੇਵ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਸਲ ਚਿੱਤਰ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰਦੇ ਹੋਏ।
-
ਐਪ ਚਲਾਓ ਅਤੇ ਕੈਮਰਾ ਨੂੰ ਸ਼ੈਲਫ 'ਤੇ ਕੁਝ ਸਟਾਕ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੋ। ਤੁਸੀਂ VS Code ਐਕਸਪਲੋਰਰ ਵਿੱਚ
image.jpg
ਫਾਈਲ ਦੇਖੋਗੇ ਅਤੇ ਇਸਨੂੰ ਚੁਣ ਕੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੇਖ ਸਕਦੇ ਹੋ।
ਸਟਾਕ ਗਿਣੋ
ਉਪਰ ਦਿੱਤੇ ਚਿੱਤਰ ਵਿੱਚ, ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਵਿੱਚ ਥੋੜ੍ਹਾ ਜਿਹਾ ਓਵਰਲੈਪ ਹੈ। ਜੇ ਇਹ ਓਵਰਲੈਪ ਬਹੁਤ ਵੱਧ ਹੋਵੇ, ਤਾਂ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਇੱਕੋ ਚੀਜ਼ ਨੂੰ ਦਰਸਾ ਸਕਦੇ ਹਨ। ਚੀਜ਼ਾਂ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਗਿਣਣ ਲਈ, ਤੁਹਾਨੂੰ ਮਹੱਤਵਪੂਰਨ ਓਵਰਲੈਪ ਵਾਲੇ ਬਾਕਸਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਪਵੇਗਾ।
ਟਾਸਕ - ਓਵਰਲੈਪ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹੋਏ ਸਟਾਕ ਗਿਣੋ
-
Pip ਪੈਕੇਜ Shapely ਇੰਟਰਸੈਕਸ਼ਨ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਰਾਸਪਬੈਰੀ ਪਾਈ ਵਰਤ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਡਿਪੈਂਡੈਂਸੀ ਇੰਸਟਾਲ ਕਰਨੀ ਪਵੇਗੀ:
sudo apt install libgeos-dev
-
Shapely Pip ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰੋ:
pip3 install shapely
ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ ਐਕਟੀਵੇਟ ਕੀਤੇ ਗਏ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਤੋਂ ਚਲਾਇਆ ਜਾਵੇ।
-
app.py
ਫਾਈਲ ਦੇ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਇੰਪੋਰਟ ਸਟੇਟਮ ਸ਼ਾਮਲ ਕਰੋ:from shapely.geometry import Polygon
ਇਹ ਪੋਲਿਗਨ ਬਣਾਉਣ ਲਈ ਲੋੜੀਂਦਾ ਕੋਡ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਓਵਰਲੈਪ ਦੀ ਗਣਨਾ ਕੀਤੀ ਜਾ ਸਕੇ।
-
ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਖਿੱਚਣ ਵਾਲੇ ਕੋਡ ਤੋਂ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:
overlap_threshold = 0.20
ਇਹ ਓਵਰਲੈਪ ਦੀ ਪ੍ਰਤੀਸ਼ਤਤਾ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜਿਸ ਤੋਂ ਬਾਅਦ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਇੱਕੋ ਚੀਜ਼ ਮੰਨੇ ਜਾਂਦੇ ਹਨ। 0.20 ਇੱਕ 20% ਓਵਰਲੈਪ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
-
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)])
ਇਹ ਪੇਸ਼ਗੂਈ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਪੋਲਿਗਨ ਬਣਾਉਂਦਾ ਹੈ।
-
ਓਵਰਲੈਪਿੰਗ ਚੀਜ਼ਾਂ ਨੂੰ ਹਟਾਉਣ ਲਈ ਲਾਜ਼ਮੀ ਤਰਕ ਵਿੱਚ ਸਾਰੀਆਂ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੀ ਤੁਲਨਾ ਸ਼ਾਮਲ ਹੈ। ਜੇ ਕਿਸੇ ਵੀ ਜੋੜੇ ਦੀ ਪੇਸ਼ਗੂਈਆਂ ਦੇ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਓਵਰਲੈਪ ਥ੍ਰੈਸ਼ਹੋਲਡ ਤੋਂ ਵੱਧ ਹੋ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਇੱਕ ਪੇਸ਼ਗੂਈ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ:
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 ਸੇਵਾ ਨੂੰ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ ਤਾਂ ਜੋ ਸਟਾਕ ਲੈਵਲ ਘੱਟ ਹੋਣ 'ਤੇ ਚੇਤਾਵਨੀ ਦਿੱਤੀ ਜਾ ਸਕੇ। ਇਹ ਸਾਰਾ ਕੋਡ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਖਿੱਚਣ ਤੋਂ ਪਹਿਲਾਂ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ ਓਵਰਲੈਪ ਤੋਂ ਬਿਨਾਂ ਸਟਾਕ ਪੇਸ਼ਗੂਈਆਂ ਨੂੰ ਜਨਰੇਟ ਕੀਤੇ ਚਿੱਤਰਾਂ 'ਤੇ ਦੇਖੋਗੇ।
💁 ਇਹ ਓਵਰਲੈਪ ਨੂੰ ਹਟਾਉਣ ਦਾ ਬਹੁਤ ਸਧਾਰਨ ਤਰੀਕਾ ਹੈ, ਸਿਰਫ਼ ਓਵਰਲੈਪ ਵਾਲੇ ਜੋੜੇ ਵਿੱਚ ਪਹਿਲੇ ਨੂੰ ਹਟਾਉਣਾ। ਪ੍ਰੋਡਕਸ਼ਨ ਕੋਡ ਲਈ, ਤੁਸੀਂ ਇੱਥੇ ਹੋਰ ਤਰਕ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੋਗੇ, ਜਿਵੇਂ ਕਿ ਕਈ ਚੀਜ਼ਾਂ ਦੇ ਓਵਰਲੈਪ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਜਾਂ ਜੇਕਰ ਇੱਕ ਬਾਊਂਡਿੰਗ ਬਾਕਸ ਦੂਜੇ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ।
-
ਐਪ ਚਲਾਓ ਅਤੇ ਕੈਮਰਾ ਨੂੰ ਸ਼ੈਲਫ 'ਤੇ ਕੁਝ ਸਟਾਕ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੋ। ਆਉਟਪੁੱਟ ਓਵਰਲੈਪ ਥ੍ਰੈਸ਼ਹੋਲਡ ਤੋਂ ਵੱਧ ਓਵਰਲੈਪ ਤੋਂ ਬਿਨਾਂ ਬਾਊਂਡਿੰਗ ਬਾਕਸਾਂ ਦੀ ਗਿਣਤੀ ਦਰਸਾਏਗੀ।
overlap_threshold
ਵੈਲਿਊ ਨੂੰ ਸਮਾਧਾਨ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਤਾਂ ਜੋ ਪੇਸ਼ਗੂਈਆਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ ਜਾ ਸਕੇ।
💁 ਤੁਸੀਂ ਇਹ ਕੋਡ code-count/pi ਜਾਂ code-count/virtual-iot-device ਫੋਲਡਰ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ।
😀 ਤੁਹਾਡਾ ਸਟਾਕ ਕਾਊਂਟਰ ਪ੍ਰੋਗਰਾਮ ਸਫਲ ਰਿਹਾ!
ਅਸਵੀਕਰਤੀ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।