در قسمت چهارم از مجموعه آموزشی پردازش تصویر در پایتون، ترسیم بر روی ویدئو را شروع کردیم و یک خط و یک مستطیل بر روی ویدئو رسم کردیم. در این قسمت نیز ترسیم بر روی ویدئو را ادامه داده و اشکال دیگری را بر روی ویدئو رسم خواهیم کرد.
ترسیم بر روی ویدئو در این قسمت شامل، رسم دایره، رسم چندضلعی و نوشتن متن خواهد بود.
دوباره همانند قبل ویدئو را از وبکم ضبط میکنیم، سپس با استفاده از دستور circle از کتابخانه OpenCV دایرهای را بر روی تصویر رسم خواهیم کرد.
نحوهی رسم دایره به این صورت است که باید مختصات نقطهای را برای مرکز دایره و همچنین یک پارامتر برای شعاع دایره در نظر بگیریم. رنگ و ضخامت دایره رسم شده هم مثل همیشه قابل انتخاب است.
برای رسم چند ضلعی ابتدا باید مختصات چندین نقطه را مشخص کنیم، ما با استفاده از دستور array از کتابخانه numpy مختصات چهار نقطه را مشخص کردیم و سپس با استفاده از دستور polylines از کتابخانه OpenCV چند ضلعی را بر روی تصویر خواهیم کرد.
در دستور polylines یک پارامتر وجود دارد که مشخص میکند چند ضلعی رسم شده بسته باشد یا باز، یعنی ابتدا و انتهای چند ضلعی را به هم وصل کند یا خیر.
اگر این پارامتر را False قرار دهیم چند ضلعیِ باز ترسیم میشود و ابتدا و انتهای چند ضلعی به هم وصل نمیشود ولی اگر این پارامتر را True قرار بدهیم، چند ضلعیِ بسته ترسیم میشود و ابتدا و انتهای آن به هم وصل میشود.
برای نوشتن بر روی تصویر هم با استفاده از دستور putText و قرار دادن متن دلخواه به عنوان پارامتر ورودی این تصویر،بر روی ویدئو مینویسیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import cv2 import numpy as np cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read() frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.line(frame, (100, 200), (200, 400), (0, 255, 0), 10) cv2.rectangle(frame, (100, 200), (200, 300), (0, 0, 255), 5) cv2.circle(frame, (400, 200), 70, (120, 0, 50), 3) pts = np.array([[50, 100], [120, 200], [250, 100], [400, 20]]) cv2.polylines(frame, [pts], True, (60, 40, 20), 5) font = cv2.FONT_HERSHEY_COMPLEX cv2.putText(frame, 'Hello World!',(100,100),font,1,(100,0,0),1) cv2.imshow('webcam', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() |
پس از اجرای برنامه خروجی زیر برای ما قابل مشاهده خواهد بود:
سلام استاد عزیز
ممنونم بابت توضیحات مفیدتون
من وقتی cap=cv2.Videocapture(0) رو میزنم مدتها سیستم میمونه و بالا نمیاره دوربین رو حتی با cv2.cap_dshow هم تست کردم توی نرم افزارهای دیگه ب راحتی دوربین لب تاب بالا میاد ولی توی کد نویسی اوپن سی وی بالا نمیاد بعد مدتی هم هنگ میکنه
مشخصات لب تابم هم خوبه و پایین نیست
از طرفی وقتی یک ویدیو میخوام باز کنم فریم ب فریم ارور cvtcolor میده ک بازهم طبق کدشما ک از cv2.cvtcolor استفاده کردید ، استفاده کردم بازهم ارور cvt میده
سلام تشکراز زحمات شما لطفاً اموزشو ادامه بدید
سلام کیان عزیز. سپاس از نظر مثبت شما. حتما ادامه خواهیم داد.