import cv2
import numpy as np
img = cv2.imread('coins.jpg')
coins_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
coins_preprocessed = cv2.GaussianBlur(coins_gray, (5, 5), 0)
_, coins_binary = cv2.threshold(coins_preprocessed, 130, 255, cv2.THRESH_BINARY)
coins_binary = cv2.bitwise_not(coins_binary)
_,coins_contours, _ = cv2.findContours(coins_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# make copy of image
coins_and_contours = np.copy(img)
# find contours of large enough area
min_coin_area = 60
large_contours = [cnt for cnt in coins_contours if cv2.contourArea(cnt) > min_coin_area]
# draw contours
cv2.drawContours(coins_and_contours, large_contours, -1, (255,0,0))
# print number of contours
print('number of coins: %d' % len(large_contours))
# create copy of image to draw bounding boxes
bounding_img = np.copy(img)
# for each contour find bounding box and draw rectangle
for contour in large_contours:
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(bounding_img, (x, y), (x + w, y + h), (0, 255, 0), 3)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', bounding_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
💢💢💢💢💢
import numpy as np
img = cv2.imread('coins.jpg')
coins_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
coins_preprocessed = cv2.GaussianBlur(coins_gray, (5, 5), 0)
_, coins_binary = cv2.threshold(coins_preprocessed, 130, 255, cv2.THRESH_BINARY)
coins_binary = cv2.bitwise_not(coins_binary)
_,coins_contours, _ = cv2.findContours(coins_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# make copy of image
coins_and_contours = np.copy(img)
# find contours of large enough area
min_coin_area = 60
large_contours = [cnt for cnt in coins_contours if cv2.contourArea(cnt) > min_coin_area]
# draw contours
cv2.drawContours(coins_and_contours, large_contours, -1, (255,0,0))
# print number of contours
print('number of coins: %d' % len(large_contours))
# create copy of image to draw bounding boxes
bounding_img = np.copy(img)
# for each contour find bounding box and draw rectangle
for contour in large_contours:
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(bounding_img, (x, y), (x + w, y + h), (0, 255, 0), 3)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', bounding_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
💢💢💢💢💢
python_developer
import cv2 def sufra(): img = cv2.imread('coins.jpg') coins_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.namedWindow('image', cv2.WINDOW_NORMAL) coins_preprocessed = cv2.GaussianBlur(coins_gray, (5, 5), 0) _, coins_binary = cv2.threshold(coins_preprocessed…
⁉️اگر کد منتخب ارر داد کد زیر را امتحان کنید:
import cv2
def sufra():
img = cv2.imread('coins.jpg')
coins_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
coins_preprocessed = cv2.GaussianBlur(coins_gray, (5, 5), 0)
_, coins_binary = cv2.threshold(coins_preprocessed, 130, 255, cv2.THRESH_BINARY)
coins_binary = cv2.bitwise_not(coins_binary)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', coins_binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
if name == 'main':
sufra()
import cv2
def sufra():
img = cv2.imread('coins.jpg')
coins_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
coins_preprocessed = cv2.GaussianBlur(coins_gray, (5, 5), 0)
_, coins_binary = cv2.threshold(coins_preprocessed, 130, 255, cv2.THRESH_BINARY)
coins_binary = cv2.bitwise_not(coins_binary)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', coins_binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
if name == 'main':
sufra()
💢دومین پروژه💢
2) تشخیص چهره
تشخیص چهره یکی از داغترین موضوعات بینایی کامپیوتر در چند سال اخیر بوده است.
این تکنولوژی قابل استفاده و همه جا در دسترس است.
✅ در همین ابتدا سه مفهوم زیر را به خاطر بسپارید:
💡1️⃣:مفهموم Face detection: تشخیص چهره واینکه مورد مربوط به چهره یک فرد باشد.
💡2️⃣:مفهومFace recognition: تشخیص یا شناخت چهره یک فرد خاص مثلا علی.
💡3️⃣:مفهوم facial expression recignition:تشخیص حالت چهره ، اینکه یه فردی خوشحاله یا غمگینه و....
💢💢💢💢💢
2) تشخیص چهره
تشخیص چهره یکی از داغترین موضوعات بینایی کامپیوتر در چند سال اخیر بوده است.
این تکنولوژی قابل استفاده و همه جا در دسترس است.
✅ در همین ابتدا سه مفهوم زیر را به خاطر بسپارید:
💡1️⃣:مفهموم Face detection: تشخیص چهره واینکه مورد مربوط به چهره یک فرد باشد.
💡2️⃣:مفهومFace recognition: تشخیص یا شناخت چهره یک فرد خاص مثلا علی.
💡3️⃣:مفهوم facial expression recignition:تشخیص حالت چهره ، اینکه یه فردی خوشحاله یا غمگینه و....
💢💢💢💢💢
✅احتمالا در این پروژه ، اول face detectionو سپس face recognition را با استفاده از opencv مورد بحث قرار دهیم.
💢💢💢
💢💢💢
💢1. FACE DETECTION💢
1️⃣ پیش زمینه ای از تشخیص چهره:
یکی ازکاربردهای تشخیص چهره، برای باز کردن قفل گوشی با یک نگاه میباشد.
به طور خلاصه Face DetectionوFace Recognition (تشخیص چهره و شناسایی چهره) هنگام باز کردن قفل گوشی به صورت زیر میباشد:
شما به گوشی خود نگاه می کنید و چهره شما را از یک تصویر استخراج می کند (نام مریم برای این روند تشخیص چهره (face detection)است). سپس، چهره فعلی را با آن که قبل از آن در طی تمرین ذخیره شده بود، مقایسه می کند و اگر هر دو آنها مطابقت داشته باشد (نام مریم برای شناسایی چهره (face recognition)است)، قفل را باز می کند.
✅نمونه ی دیگری که توسط نرم افزارهای تشخیص و شناسایی چهره اجام میشود ، خود پردازها میباشند که با شناسایی چهره ی افراد امکان برداشت پول را به آنها میدهند.
💢💢💢
1️⃣ پیش زمینه ای از تشخیص چهره:
یکی ازکاربردهای تشخیص چهره، برای باز کردن قفل گوشی با یک نگاه میباشد.
به طور خلاصه Face DetectionوFace Recognition (تشخیص چهره و شناسایی چهره) هنگام باز کردن قفل گوشی به صورت زیر میباشد:
شما به گوشی خود نگاه می کنید و چهره شما را از یک تصویر استخراج می کند (نام مریم برای این روند تشخیص چهره (face detection)است). سپس، چهره فعلی را با آن که قبل از آن در طی تمرین ذخیره شده بود، مقایسه می کند و اگر هر دو آنها مطابقت داشته باشد (نام مریم برای شناسایی چهره (face recognition)است)، قفل را باز می کند.
✅نمونه ی دیگری که توسط نرم افزارهای تشخیص و شناسایی چهره اجام میشود ، خود پردازها میباشند که با شناسایی چهره ی افراد امکان برداشت پول را به آنها میدهند.
💢💢💢
This media is not supported in your browser
VIEW IN TELEGRAM
💢2. THEORY OF FACE DETECTION CLASSIFIERS💢
1️⃣2️⃣ تئوری طبقه بندی تشخیص چهره
✅برنامه کامپیوتری که تصمیم می گیرد یک تصویر ، تصویر مثبت (تصویر چهره) یا تصویر منفی (تصویر غیر چهره) باشد، طبقه بندی نامیده می شود.
طبقه بند، برای یادگیری صدها هزار تصویر چهره و غیر چهره آموزش دیده است که چگونه یک تصویر جدید را به درستی طبقه بندی کند.
کتابخانه OpenCV ، ما را با دو پیش آموزش دیده آماده می کند که برای طبقه بندی تشخیص چهره استفاده می شود:
1️⃣Haar Classifier
2️⃣LBP Classifier
💢💢💢💢💢💢💢💢💢
1️⃣2️⃣ تئوری طبقه بندی تشخیص چهره
✅برنامه کامپیوتری که تصمیم می گیرد یک تصویر ، تصویر مثبت (تصویر چهره) یا تصویر منفی (تصویر غیر چهره) باشد، طبقه بندی نامیده می شود.
طبقه بند، برای یادگیری صدها هزار تصویر چهره و غیر چهره آموزش دیده است که چگونه یک تصویر جدید را به درستی طبقه بندی کند.
کتابخانه OpenCV ، ما را با دو پیش آموزش دیده آماده می کند که برای طبقه بندی تشخیص چهره استفاده می شود:
1️⃣Haar Classifier
2️⃣LBP Classifier
💢💢💢💢💢💢💢💢💢
💢2.1 HAAR CLASSIFIER💢
2.1 HAAR CLASSIFIER
طبقه بند HAAR ،یک روش مبتنی بر یادگیری ماشین است، یک الگوریتم ایجاد شده توسط Paul Viola و Michael Jones؛ که
از تصاویر مثبت (با چهره) و تصاویر منفی (بدون چهره) خیلی خیلی زیاد، آموزش دیده است:
🌐https://en.wikipedia.org/wiki/Haar-like_feature.
🌐https://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
✅این کار با استخراج ویژگی های Haar از هر تصویر شروع می شود که توسط پنجره های زیر نشان داده شده است:
💢💢💢💢💢💢💢💢💢
2.1 HAAR CLASSIFIER
طبقه بند HAAR ،یک روش مبتنی بر یادگیری ماشین است، یک الگوریتم ایجاد شده توسط Paul Viola و Michael Jones؛ که
از تصاویر مثبت (با چهره) و تصاویر منفی (بدون چهره) خیلی خیلی زیاد، آموزش دیده است:
🌐https://en.wikipedia.org/wiki/Haar-like_feature.
🌐https://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
✅این کار با استخراج ویژگی های Haar از هر تصویر شروع می شود که توسط پنجره های زیر نشان داده شده است:
💢💢💢💢💢💢💢💢💢
Wikipedia
Haar-like feature
technique in computer vision
✅هر پنجره بر روی تصویر قرار می گیرد تا یک ویژگی واحد محاسبه شود. این ویژگی یک ارزش واحد است که توسط تفریق به دست می آید:
مجموع پیکسل ها در زیر قسمت سفید پنجره از مجموع پیکسل ها در زیر قسمت سیاه پنجره.
در حال حاضر، تمام اندازه های ممکن هر پنجره ، در همه مکان های ممکن برای هر تصویر ، برای محاسبه مقدار زیادی از ویژگی هاقرار می گیرد.
💢💢💢💢💢💢💢💢💢
مجموع پیکسل ها در زیر قسمت سفید پنجره از مجموع پیکسل ها در زیر قسمت سیاه پنجره.
در حال حاضر، تمام اندازه های ممکن هر پنجره ، در همه مکان های ممکن برای هر تصویر ، برای محاسبه مقدار زیادی از ویژگی هاقرار می گیرد.
💢💢💢💢💢💢💢💢💢
✅به عنوان مثال، در تصویر بالا، ما دو ویژگی را استخراج می کنیم. اولین مورد تمرکز بر ویژگی ای است که ناحیه ی چشمها، اغلب تیره تر از ناحیه بینی و گونه است.
دومین ویژگی مربوط به ناحیه ای است که چشمها تیره از برآمدگی بینی است.
💢💢💢💢💢💢💢💢💢
دومین ویژگی مربوط به ناحیه ای است که چشمها تیره از برآمدگی بینی است.
💢💢💢💢💢💢💢💢💢
✔️اما در میان تمام این ویژگی ها ی محاسبه شده ، بیشتر آنها بی اهمیت هستند. برای مثال، هنگامی که در گونه ها استفاده می شود، پنجره ها نامناسب می شوند، زیرا هیچ یک از این ناحیه ها، تیره تر و سبک تر از سایر نواحی در گونه ها نیستند. بنابراین، فورا ویژگی های نامناسب را کنار می گذاریم و فقط آنهایی را که با تکنیک Adaboost مرتبط هستند را حفظ می کنیم.
☑️تکنیک Adaboost: یک فرآیند آموزش برای تشخیص چهره است که فقط ویژگی های شناخته شده برای بهبود و دقت طبقه بندی (چهره / غیر چهره) ، را انتخاب می کند.
💢💢💢💢💢💢💢💢💢
☑️تکنیک Adaboost: یک فرآیند آموزش برای تشخیص چهره است که فقط ویژگی های شناخته شده برای بهبود و دقت طبقه بندی (چهره / غیر چهره) ، را انتخاب می کند.
💢💢💢💢💢💢💢💢💢
💢2.2 LBP CASCADE CLASSIFIER💢
طبقه بند دیگر، Local Binary Patterns یا به اختصار LBP میباشد.
✔️الگوهای باینری محلی (LBP)، نوعی توصیفگر بصری است که برای طبقه بندی در بینایی کامپیوتری استفاده می شود. LBP مورد خاصی از مدل طیف بافت است.
💢💢💢💢💢💢💢💢
طبقه بند دیگر، Local Binary Patterns یا به اختصار LBP میباشد.
✔️الگوهای باینری محلی (LBP)، نوعی توصیفگر بصری است که برای طبقه بندی در بینایی کامپیوتری استفاده می شود. LBP مورد خاصی از مدل طیف بافت است.
💢💢💢💢💢💢💢💢