Skip to content

Commit

Permalink
chapter4 added
Browse files Browse the repository at this point in the history
  • Loading branch information
opaip committed Jul 28, 2024
1 parent b8c5396 commit 6243085
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 0 deletions.
76 changes: 76 additions & 0 deletions src/04.DrawingFunc.md
Original file line number Diff line number Diff line change
@@ -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)
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
- [نصب و راه اندازی](./01.installation.md)
- [ شروع به کار با عکس](./02.StartWithImage.md)
- [شروع به کار با ویدیو](./03.StartWithVideo.md)
- [توابع رسم](./04.DrawingFunc.md)
Binary file added src/assets/drawing_result.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 6243085

Please sign in to comment.