برنامه نویسی

شمارش تعداد موارد با استفاده از پایتونای

در این مقاله ، در مورد پردازش تصویر با Python و OpenCV پیشنهاد می کند
با جدا کردن اشیاء از تصویر ، یکی از فرآیندهای اساسی بسیار مهم است. از آنجا که می تواند در بسیاری از شاخه ها مانند شمارش تعداد محصولات تجزیه و تحلیل تجربی علمی یا اندازه گیری میزان محصولات کشاورزی استفاده شود

در این مقاله ، ما نمونه ای از OPENCV را برای جدا کردن اشیاء از تصویر نشان خواهیم داد. و تعداد اشیاء شناسایی شده با استفاده از تکنیک های اساسی پردازش تصویر را بشمارید

که از آن استفاده خواهیم کرد
OpenCV پردازش اصلی تصاویر است.
NIMPY در مدیریت اعداد
از Matplotlib برای نمایش در Colab استفاده می شود.
Google Drive برای بارگیری پرونده های تصویری از پوشه ذخیره شده استفاده می شود.

با وارد کردن کتابخانه شروع کنید

# Import libraries
import cv2
import numpy as np
import matplotlib.pyplot as plt
from google.colab import drive
drive.mount('/content/drive')

قبل از پردازش تصویر ، ابتدا باید آن را تصویر نامید.
که ما از Google Drive برای جمع آوری تصاویر استفاده می کنیم ، بنابراین باید از Google Drive تماس بگیریم
ما با جدا کردن اشیاء مانند سکه شروع خواهیم کرد.

image = cv2.imread('/content/drive/My Drive/AIData1051/coinn.jpg')

و بعد از دریافت تصویر

شرح تصویر

مرحله بعدی جدا کردن اشیاء از تصاویر ما است.

1. تصویر خاکستری است تا پردازش آسانتر شود.

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

شرح تصویر

2. Belle با تاری گاوسی برای سر و صدایی که ممکن است بر پردازش تصویر تأثیر بگذارد.

blur = cv2.GaussianBlur(gray, (11, 11), 0)

شرح تصویر

3. لبه را با تشخیص لبه Canny تشخیص دهید. برای شناسایی “مرز” شی در تصویر استفاده می شود.

canny = cv2.Canny(blur, 30, 150, 3)

شرح تصویر

4. گسترش لبه با اتساع ، لبه های شیء را واضح تر می کند. و آن را برای یافتن کانتور مناسب می کند

dilated = cv2.dilate(canny, (1, 1), iterations=0)

شرح تصویر

5. برای مشخص کردن اشیاء توسط کانتورها پیدا کنید cv2.findContours تمام مقادیر کانتور موجود را که به جای مرز شیء است ، باز می گرداند

(cnt, hierarchy) = cv2.findContours(dilated.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

شرح تصویر

6. سرانجام ، قاب هر شی را در تصویر ترسیم کنید. و شمارش مقدار شناسایی شده از پردازش

cv2.drawContours(rgb, cnt, -1, (0, 255, 0), 2)
print("coins in the image : ", len(cnt))

که در آن نتیجه نهایی است

شرح تصویر

در مرحله بعد ، بیایید با استفاده از اشیاء روشن و اشتها آور ، چیزهای دلپذیر بیشتری را امتحان کنیم.

میان وعده های شکلاتی

این تصویری از دسر است که ما استفاده می کنیم. خیلی خوب غذا خوردن

شرح تصویر

ما مانند گذشته شروع به کار خواهیم کرد.

با وارد کردن کتابخانه شروع کنید

# Import libraries
import cv2
import numpy as np
import matplotlib.pyplot as plt
from google.colab import drive
drive.mount('/content/drive')

و تصویر را از Google Drive بیاورید

image = cv2.imread('/content/drive/My Drive/AIData1051/candy1.png')

شرح تصویر

مرحله بعدی جدا کردن اشیاء از تصاویر ما است.

1. تصویر خاکستری است تا پردازش آسانتر شود.

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

شرح تصویر

2. Belle با تاری گاوسی برای سر و صدایی که ممکن است بر پردازش تصویر تأثیر بگذارد.

blur = cv2.GaussianBlur(gray, (11, 11), 0)

شرح تصویر

3. لبه را با تشخیص لبه Canny تشخیص دهید. برای شناسایی “مرز” شی در تصویر استفاده می شود.

canny = cv2.Canny(blur, 30, 150, 3)

شرح تصویر

4. گسترش لبه با اتساع ، لبه های شیء را واضح تر می کند. و آن را برای یافتن کانتور مناسب می کند

dilated = cv2.dilate(canny, (1, 1), iterations=0)

شرح تصویر

5. برای مشخص کردن اشیاء توسط کانتورها پیدا کنید cv2.findContours تمام مقادیر کانتور موجود را که به جای مرز شیء است ، باز می گرداند

(cnt, hierarchy) = cv2.findContours(dilated.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

شرح تصویر

6. سرانجام ، قاب هر شی را در تصویر ترسیم کنید. و شمارش مقدار شناسایی شده از پردازش

cv2.drawContours(rgb, cnt, -1, (0, 255, 0), 2)
print("coins in the image : ", len(cnt))

که در آن نتیجه نهایی است

شرح تصویر

این نباید روشن به نظر برسد. دوست دارم کمی بیشتر از مرز اضافه شود

# แปลงภาพเป็น RGB เพื่อใช้กับ matplotlib
rgb = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2RGB)

# วาดแต่ละ contour ด้วยสีสุ่ม
for c in cnt:
    color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
    cv2.drawContours(rgb, [c], -1, color, 2)

print("Objects in the image:", len(cnt))
plt.imshow(rgb)
plt.title("Detected Objects with Random Colors")
plt.show()

شرح تصویر

زیبا تر

برنامه استفاده شده

این کد را می توان با جداگانه دیگر اشیاء مانند دانه ، قرص ، قرص یا حتی قطعات کوچک در خط تولید جدا کرد.
فقط پارامترهایی مانند پارامترهای تاری ، تشخیص لبه یا فیلتر کانتور را تنظیم کنید. با توجه به اندازه تصویر مورد نظر ، می توان از آن بیشتر استفاده کرد.

خلاصه کردن

جداسازی اشیاء از OPENCV ابزاری است که برای پردازش اساسی تصویر قابل استفاده است. کد در این مقاله می تواند به عنوان نقطه شروع برای پروژه های بیشتر استفاده شود.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا