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

در این مقاله ، در مورد پردازش تصویر با 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 ابزاری است که برای پردازش اساسی تصویر قابل استفاده است. کد در این مقاله می تواند به عنوان نقطه شروع برای پروژه های بیشتر استفاده شود.