diff --git a/src/04.DrawingFunc.md b/src/04.DrawingFunc.md new file mode 100644 index 0000000..ef95d0a --- /dev/null +++ b/src/04.DrawingFunc.md @@ -0,0 +1,76 @@ +# اهداف +* یادگیری ترسیم انواع شکل های هندسی +* یادگیری توابع ` cv.line(), cv.circle() , cv.rectangle(), cv.ellipse(), cv.putText()` + +# کد +همه توابعی که در نمونه کد خواهیم دید همه ورودی های مشترکی خواهند داشت +`img` : عکسی که در آن میخواهیم چیزی را رسم کنیم. +`color` : رنگ اشکل ها. برای RGB کافیست یک تاپل به عنوان ورودی دهیم به عنوان مثال (255,0,0) برای آبی و برای . +`thickness` : ضخامت هر خط یا دایره و ... اگر برای اشکال بسته مانند دایر عدد -1 به عنوان ورودی داده شود داخل شکل پر خواهد شد . ورودی پیش فرض : -1 +`lineType` : نوع خط مانند 8-connected پیش فرض : 8-connected. `cv.LINE_AA` برای منحنی ها گزینه خوبی است + + +## رسم خط +برای رسم خط باید مختصات ابتدا و انتهای خط داده شود. برای رسم یک خط آبی در صفحه مشکی که از بالا چپ به راست پایین است اینگونه عمل میکنیم. + +```python + +import numpy as np +import cv2 as cv + +# Create a black image +img = np.zeros((512,512,3), np.uint8) + +# Draw a diagonal blue line with thickness of 5 px +cv.line(img,(0,0),(511,511),(255,0,0),5) + +``` + +## رسم مستطیل + +برای رسم مستطیل نیاز به مختصات بالا چپ و پایین راست مستطیل داریم. +این دفعه یک مسطیل سبز رسم میکنیم. + +```python +cv.rectangle(img,(384,0),(510,128),(0,255,0),3) +``` + +## رسم دایره +برای رسم دایره نیاز به شعاع و مختصات مرکز داریم. +```python +cv.circle(img,(447,63), 63, (0,0,255), -1) +``` +## رسم بیضی + +برای رسم بیضی نیاز به چند ورودی داریم +* مختصات مرکز به صورت (x,y) +* طول قطر های بیضی +* زاویه چرخش بیضی در خلاف جهت عقربه های ساعت , زاویه شروع و پایان نشان دهنده شروع و پایان کمان بیضی است که در جهت عقربه های ساعت از محور اصلی اندازه گیری می شود. دادن مقادیر 0 و 360 نشان دهند بیضی کامل است. +کد زیر نیمه بیضی در مرکز تصویر رسم میکند. +```python +cv.ellipse(img,(256,256),(100,50),0,0,180,255,-1) +``` + +# رسم چند ضلعی +برای رسم چند ضلعی به مختصات رئوس نیاز داریم. +آن نقاط را به آرایه ای به شکل ROWSx1x2 تبدیل میکنیم به صورتی که ROWS تعداد رئوس را نشان میدهد و باید به صورت int32 باشد. +یک نمومنه چد ضلعی زرد رنگ : +```python +pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32) +pts = pts.reshape((-1,1,2)) +cv.polylines(img,[pts],True,(0,255,255)) +``` + +# اضافه کردن نوشته به عکس +برای قرارد دادن نوشته روی عکس نیاز به : +* نوشته مورد نظر +* مختصات مورد نظر که میخواهیم نوشته را روی آن قرار دهیم +* نوع فونت +* اندازه فونت +* چیز های معمولی مثل رنگ , ضخامت , نوع خط و ... `lineType = cv.LINE_AA` پیشنهاد میشود. + +```python +font = cv.FONT_HERSHEY_SIMPLEX +cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA) +``` +![resault](./assets/drawing_result.jpg) \ No newline at end of file diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 6b1ce36..1705043 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -3,3 +3,4 @@ - [نصب و راه اندازی](./01.installation.md) - [ شروع به کار با عکس](./02.StartWithImage.md) - [شروع به کار با ویدیو](./03.StartWithVideo.md) +- [توابع رسم](./04.DrawingFunc.md) \ No newline at end of file diff --git a/src/assets/drawing_result.jpg b/src/assets/drawing_result.jpg new file mode 100644 index 0000000..812c794 Binary files /dev/null and b/src/assets/drawing_result.jpg differ