پردازش تصویر در پایتون ( قسمت دوم )


قسمت اول ☜(゚ヮ゚☜)

https://vrgl.ir/lx9QY




بریم شروع کنیم

خب دوستان فکر کنم خیلی ها منتظر این قسمت بودن اول از همه بگم امروز چه چیز هایی رو می خوایم درس بدیم


مطالب امروز درباره resize کردن یا همون تغییر اندازه عکس که وارد کردیم و رسم شکل و ... روی عکس

پس حتما همراه ما باشید


ریسایز ___ Resize

عکس از سورس کد ریسایز
عکس از سورس کد ریسایز

خب خیلی ها ازم می پرسیدن که وقتی ما یک عکس را فراخوانی می کنیم داخل پایتون عکس خیلی بزرگ نمایش داده می شود که منم داخل کامنت ها جواب ایشان را دادم

در اصل اندازه پنجره و عکس شما مربوط به مقدار px ( پیکسل ) های عکس شماست ولی یک راه حل برای اینکه این عکس را داخل خود پایتون ریسایز کرد وجود داره

در اصل شما تا اخر این اموزش رو اگر با ما همراه باشید می تونید یک ابزار ساده مثل فوتوشاپ را خلق کنید


خب اول از همه برای ریسایز کردن یک کد هست به نام cv2.resize که داخل این کد سه پارامتر قرار می گیره که در ادامه توضیح می دم


پارامتر اول src : یا همون عکسمون
پارامتر دوم dim : همون اندازه و scale عکس
پارامتر سوم interpolation : که خودمم نمی دونم ولی همیشه من روی یک چیز می زارمش


scale_percent =100
width = int(img.shape[1] * scale_percent /100)
height = int(img.shape[0] * scale_percent /100)
dim = (width, height)

img = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)

کدی که مشاهده می کنید کد ریسایز

در متغیر scale_percent یک عدد باید باشه بین 1 تا 100 در ادامه می گم چرا 1 تا 100 ولی خب در اصل نسبت عکس شما با درصد مشخص می کنید برای مثال می گید عکس نصف بشه مقدار 50 را می دید به متغیر

در ادامه دو تا متغیر هست به نام width و height که این دوتا اندازه طول و عرض عکس شما هستن که در داخل هر متغیر من یک درصد تعریف کردم که از 1 تا 100 تا بتونیم راحت تر ریسایز کنیم برای کسایی که تازه کاران نمی خواد زیاد به اینا دقت کننن

بعد میایم طول و عرض به متغیر dim می دیم تا به کد ریسایز بده و عکس ریسایز بشه

خط اخر من ریسایز عکس رو توی خود متغیر اصلی عکس سیو کردم که زیاد شلوغ نشه ولی شما می تونید براش یک متغیر جدا تعریف کنید و اون رو imshow کنید


من در عکس بالا یک متغیر جدا ساختم و عکس ریسایز شده را ریختم داخلش و هم عکس معمولی را نمایش دادم و هم ریسایز شده را من مقدار scale_percent را دادم 50





رسم شکل

خب بریم روی رسم شکل روی تصویر

img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

خط کد بالا به cv2 می گه یک خط بکش از پیکسل 0 در 0 تا پیکس 511 در 511 و رنگش هم به صورت bgr ابی باشه و پهنی اون خط هم 5 باشه به همین راحتی برای رسم شکل های دیگه هم کد هاشو اینجا می زارم حتما برید ببینید داخل جلسه بعد درباره شکل ها و چند مبحث جذاب دیگه صحبت می کنیم


مربع و مستطیل : img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
دایره و بیضی : img = cv2.circle(img,(447,63), 63, (0,0,255), -1)
نیم دایره یا بیضی : img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

اگر دقت کنید داخل کد شکل های هندسی عدد اخر که مشخص کننده پهنای خط صاف بود در اینجا بعضی مواقع منفی یک نکته بگم در شکل هندسی پارامتر اخر منفی باشه یعنی باید شکل تو پر باشه و اگر مثبت باشه یعنی شکل نباید تو پر باشه و ان عدد نشانگر پهنای خط شکل هستش


ممنون که تا اینجا همراه ما بودید امیدوارم خوشتون اومده باشه خدانگهدار


سورس کد این جلسه

import cv2

#vared kardan aks dakhel python ------>>
img = cv2.imread('book.jpg',1)

#tanzim andaze aks ( RESIZE ) ----->>
scale_percent =100
width = int(img.shape[1] * scale_percent /100)
height = int(img.shape[0] * scale_percent /100)
dim = (width, height)
# resize shodan aks ---->>
img = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)
img = cv2.line(img,(447,63),(555,555),(0,90,90), 10)
img = cv2.circle(img,(47,63), 63, (0,0,255), -1)
img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

# namayesh aks ------>>
cv2.imshow(&quotwin1&quot,img)
cv2.waitKey()