generated from persianccbook/booktemplates
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
77 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.