در قسمت پانزدهم از مجموعه آموزشی پردازش تصویر در پایتون، در رابطه با حذف پس زمینه صحبت کردیم و توانستیم برنامهای بنویسیم که تصویر متحرک و در حال حرکت را نگه دارد و پس زمینهی آن تصویر را حذف کند. در این قسمت میخواهیم در رابطه با تشخیص چهره صحبت کنیم.
تشخیص چهره
تشخیص چهره یکی از کاربردیترین کارهایی است که ما در پردازش تصویر انجام میدهیم. برای اینکه بتوانیم چهره و به طور کلی بقیه اجسام یا اشیا را تشخیص بدهیم، الگوهای از قبل آماده شدهای برای ما وجود دارد که میتوانیم از آنها استفاده کنیم.
البته خودمان نیز میتوانیم این الگوها را بنویسیم، اما راحتتر این است که از الگوهای استانداردی که برای این کار وجود دارد استفاده کنیم.
برای دریافت این الگوهای آماده میتوانید از طریق سایت opencv و یا گیتهاب آن استفاده کنید.
این الگوها در سایت گیتهاب در این آدرس قرار دارند.
در آدرس ذکر شده الگوهای متفاوتی برای کل بدن، چشم چپ یا راست، عینک، پلاک و بسیاری از چیزهای دیگر وجود دارد.
برنامهای که ما در ادامه خواهیم نوشت توانایی این را دارد که صورت و چشمها را تشخیص دهد.
import cv2 import numpy as np faceXML = cv2.CascadeClassifier('face.xml') eyeXml = cv2.CascadeClassifier('eye.xml') cap = cv2.VideoCapture(0) while True: _, frame = cap.read() gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) faces = faceXML.detectMultiScale(gray) for(x,y,w,h) in faceXML: cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0), 2) roi_gray = gray[y:y+h, x:x+h] roi_color = frame[y:y+h, x:x+h] eyes = eyeXml.detectMultiScale(roi_gray) for(ex,ey,ew,eh) in eyes: cv2.rectangle(roi_color,(ex, ey), (ex+ew, ey+eh), (0, 0, 255), 2) cv2.imshow('face', frame) k = cv2.waitKey(27) & 0xFF if(k == 27): break cv2.destroyAllWindows()
پس از اجرای برنامه بالا خروجی برنامه به صورت زیر خواهد بود:
به پایان آمد این دفتر حکایت همچنان باقیست. این قسمت آخرین قسمت از این مجموعه آموزشی هست، امیدوارم که این مجموعه آموزشی برای شما مفید واقع شود و بتوانید بهره لازم را از آن ببرید.
این مقاله برگرفته از آموزش ویدئویی زیر میباشد، برای مشاهدهی جزئیات بیشتر حتما این ویدئو را مشاهده بفرمائید.
منبع: سیسوگ