من یک عکس دارم و میخوام قسمت مشخصی از آن را با پایتون کراپ کنم...چجوری این کارو کنم؟
1 پاسخ
اول از همه باید اندازه کل عکس خود را به دست آورید که شامل یک تاپل خواهد بود که دارای عرض و طول است...با استفاده از کد زیر میتوانید اندازه کل عکس خود را به دست آورید که عکسی که من در نظر گرفتم شامل تاپل (3, 1521 , 854) است که اولین عضو اندازه عرض و دومین عضو اندازه طول و سومین عضو چنل عکس را نشان میدهد( چنل rgb شماره ۳ است)
طبق خروجی کد بالا حدودی میدانیم، پهنایی که برای محدوده دلخواه انتخاب میکنیم نباید بزرگتر از اعداد عرض و طول عکس باشند.
هر عکسی از یک سری پیکسل تشکیل شده که هر پیکسل دارای y,x,channel است. اما نکته قابل اهمیت آن است که x,y برخلاف چیزی که ما از ریاضی یاد گرفتیم عمل میکنند.
مسلما ما محور x,yها را به صورت زیر تصور میکنیم و اول x و بعد y را تعریف میکنیم(x,y):
اما باید بگویم که برای پردازش تصویر x,y ها برعکس هستند...یعنی اول yها تعریف میشود و بعد xها تعریف میشود...یعنی هر پیکسل دارای تاپل (y,x, chanel) است. در واقع اول ردیف و بعد ستون را مشخص میکنند:
حال فرض کنید x,y یک نقطه از عکس را دارید و میخواهید به اندازه w, h آن را گسترش دهید و یک مستطیل درون عکس ایجاد کرده و آن را کراپ کنید.
کد آن به صورت زیر است:
نقطهای به اندازه (x=300,y=400) داریم و میخواهیم عکسی به اندازه عرض ۱۰۰ و طول ۱۰۰ از عکسمون کراپ کنیم. به خط 19 کد توجه کنید. طبق تعریف باید ابتدا اندازه rows مشخص شود پس اول محدوده y را تعیین میکنیم و سپس باید columns مشخص شود که با x:x+w (این قسمت میگه از محدوده پیکسل با اندازه x، تا محدوده پیکسل با اندازه x+w را در نظر بگیر) مشخص کردیم و در بخش سوم گفتیم هر چنلی داشت قرار بده( قسمت سوم مربوط به rgb , gray , ... است).
اگر عکس زیر را به عنوان ورودی به کد بالا بدهیم:
نتیجه آن به صورت زیر میشود:
توی عنوان سوال و متن باید بگی که داری در چه محیطی کار میکنی از کدوم بسته میتونی استفاده کنی.