پردازش تصویر در گوشی

saalek110

Well-Known Member
سالک: گوگل کلاب را بگو


دمت گرم حاجی، بهترین انتخاب رو کردی! الان مرحله‌به‌مرحله می‌گم چطوری با Google Colab شروع کنی و OpenCV رو اجرا کنی:
---

مرحله ۱: ورود به گوگل کلَب

1. برو تو مرورگر گوشیت (مثل Chrome).


2. برو به این آدرس:

3. با اکانت گوگل خودت وارد شو.


4. روی گزینه New Notebook بزن (یا «دفترچه جدید» اگه فارسیه).

مرحله ۲: نصب OpenCV

توی اولین سلول (کادر خاکستری که روش Code نوشته)، این رو بنویس:

!pip install opencv-python

بعد روی دکمه پخش (▶) بزن تا نصب کنه.

مرحله ۳: تست OpenCV

تو سلول بعدی بنویس:

import cv2
print("OpenCV version:", cv2.__version__)

دوباره ▶ بزن. اگه نسخه رو نشون داد، یعنی همه‌چیز درسته!

مرحله ۴: کار با تصویر

حالا یه تصویر بارگذاری کن و باهاش کار کن. اول این کد رو بزن برای آپلود:

from google.colab import files
uploaded = files.upload()

یه پنجره باز می‌شه، ازت می‌خواد عکس انتخاب کنی از گوشیت.

بعد این کد رو بزن تا نشون بده عکس رو با OpenCV (و matplotlib که سازگارتره):

import cv2
from matplotlib import pyplot as plt
import numpy as np
from PIL import Image
import io

for fn in uploaded.keys():
image = cv2.imdecode(np.frombuffer(uploaded[fn], np.uint8), 1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image)
plt.axis('off')
plt.title("نمایش عکس با OpenCV")
plt.show()


---

اگه خواستی یه Colab آماده با قالب خوشگل برات بسازم و لینک بدم، بگو تا همین الان درست کنم.
 

saalek110

Well-Known Member
سالک:با این pyroid حالا چه کار کنم؟ دیلت کنم یا میشه باهاش بازی کرد ، یا مثلا پایتون نوشت یا چی؟


سؤال خوبی پرسیدی حاجی!

خلاصه:

PyDroid 3 هنوز کاملاً به درد می‌خوره، حتی اگه نسخه رایگانشه.


---

کارهایی که می‌تونی با نسخه رایگانش بکنی:

1. نوشتن و تمرین کدنویسی پایتون:

می‌تونی همه ساختارهای پایه‌ای پایتون رو تمرین کنی:

متغیرها

توابع

کلاس‌ها

شرط و حلقه


برای یادگیری خود پایتون، عالیه.


2. ساخت برنامه‌های متنی و ریاضی:

ماشین حساب

بازی‌های ساده متنی مثل حدس عدد یا Quiz

کار با math, datetime, random


3. نصب کتابخانه‌های سبک:

requests برای کار با API

Pillow برای کار ساده با تصویر

matplotlib برای گراف ساده (گاهی جواب می‌ده)


4. اجرای پروژه‌های ساده آفلاین


---

چه کارهایی رو نمی‌تونه انجام بده (در نسخه رایگان):

OpenCV (پردازش تصویر پیشرفته)

TensorFlow و Keras (یادگیری ماشین)

بعضی پکیج‌های سنگین مثل scikit-learn یا mediapipe



---

پیشنهاد:

حذفش نکن فعلاً.
باهاش می‌تونی یادگیری پایه‌ای پایتون رو قوی کنی.
وقتی به چیزای سنگین نیاز داشتی (مثل OpenCV)، از Google Colab کمک بگیر.


---

اگه خواستی برات چند تا پروژه جالب سبک با PyDroid 3 معرفی کنم که بشه اجرا کرد، بگو تا بچینم برات.
 

saalek110

Well-Known Member
سالک:خسته شدم ، می خوام بروم استراحت.


Chatgpt: دمت گرم، حق داری!
اگه برگشتی و خواستی ادامه بدیم (چه با پایتون، چه با OpenCV، چه با هر چیز دیگه)، من هستم.


-----------------------------

سالک:خوب دوستان ، من pyroid3 را نصب کردم ، خوب یک سلام بهم داد ، همین هم خوبه.
ولی برای opencv باید برویم جای دیگه...
چه داش مشتی هم حرف می زنه این chatgpg خخخخخ
 
آخرین ویرایش:

saalek110

Well-Known Member
سالک:می خواهیم پردازش تصویر در گوشی کار کنیم با گوگل کلاب



خیلی هم عالی! برای اینکه پردازش تصویر روی گوشی انجام بدیم و از Google Colab استفاده کنیم، معمولاً مسیر کار به این صورته:

۱. چه چیزهایی نیاز داریم؟

گوشی اندروید (با دسترسی به اینترنت)

اپلیکیشن Google Chrome یا Google Colab

حساب کاربری گوگل

اپ Google Drive برای مدیریت فایل‌ها (اختیاری ولی مفید)



---

۲. شروع کار با Google Colab در گوشی

۱. وارد سایت Google Colab بشو. ۲. یه نوت‌بوک جدید بساز. ۳. حالا می‌تونی کدهای پایتون مخصوص پردازش تصویر رو بنویسی.


---

۳. کتابخانه‌های مهم برای پردازش تصویر

معمولاً از این‌ها استفاده می‌شه:

opencv-python برای کارهای پایه‌ای تصویر

PIL (یا Pillow) برای کار با عکس

matplotlib برای نمایش عکس

numpy برای کار با داده‌ها

tensorflow یا torch اگر هوش مصنوعی بخوای


در Colab می‌تونی با این دستور کتابخونه نصب کنی:

!pip install opencv-python


---

۴. آپلود تصویر برای پردازش

دو راه:

از گوشی تصویر رو مستقیم آپلود کنی:


from google.colab import files
uploaded = files.upload()

یا از Google Drive استفاده کنی:


from google.colab import drive
drive.mount('/content/drive')


---

۵. یک نمونه ساده از پردازش تصویر

مثلاً تبدیل عکس به سیاه و سفید:

import cv2
from google.colab import files
import matplotlib.pyplot as plt

uploaded = files.upload()
image_path = list(uploaded.keys())[0]
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

plt.imshow(img, cmap='gray')
plt.axis('off')
plt.show()


---

اگر بگی دقیقاً چه نوع پردازش تصویری مد نظرت هست (مثلاً تشخیص چهره، فیلتر، لبه‌یابی، OCR و غیره)، می‌تونم یه پروژه کوچک برات آماده کنم.
 

saalek110

Well-Known Member
سالک: من رفتم سایت گوگل کلاب و یک دفترچه جدید ساختم. اولا تشویقم کن ، دوما بگو حالا چه کار کنم



آفرین! کارت فوق‌العاده‌ست که با Google Colab شروع کردی — خیلیا هنوز جرئت نمی‌کنن سراغش برن، ولی تو رفتی جلو! این یه قدم خیلی مهم توی برنامه‌نویسی و پردازش تصویر محسوب می‌شه. واقعاً باید به خودت افتخار کنی!

Screenshot_۲۰۲۵-۰۵-۱۵_۱۷۱۶۰۴.jpg
سالک: عکس بالا را chatgpt انتخاب کرده.


حالا که یک دفترچه جدید (notebook) ساختی، این مراحل رو انجام بده:

مرحله ۱: نصب کتابخانه مورد نیاز


در اولین سلول بنویس:

!pip install opencv-python matplotlib


این کد کتابخانه‌های opencv (برای کار با تصویر) و matplotlib (برای نمایش تصویر) رو نصب می‌کنه.


بعد دکمه ▶️ کنار سلول رو بزن تا اجرا بشه.




مرحله ۲: آپلود تصویر از گوشی


یه سلول جدید بساز و این رو بنویس:

from google.colab import files
uploaded = files.upload()


با اجرا کردن این سلول، یه پنجره باز می‌شه که می‌تونی از گوشی یه عکس انتخاب و آپلود کنی.




مرحله ۳: پردازش تصویر (مثلاً سیاه و سفید کردن)


بعد از اینکه عکس آپلود شد، این کد رو اجرا کن:

import cv2
import matplotlib.pyplot as plt

image_path = list(uploaded.keys())[0]
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

plt.imshow(img, cmap='gray')
plt.axis('off')
plt.show()


نتیجه: تصویرت به صورت سیاه و سفید نمایش داده می‌شه!




اگه خواستی کارهای خاص‌تری انجام بدی، مثل تشخیص چهره یا حذف پس‌زمینه یا ساخت افکت، فقط بگو تا راهنمایی‌ات کنم.
 
آخرین ویرایش:

saalek110

Well-Known Member
سالک:میشه تو خودت یک عکس بسازی برای کار؟ خواهش می کنم.


حتماً، چون گفتی خواهش می‌کنی، با کمال میل! الان یک تصویر ساده برات می‌سازم که بتونی روش پردازش انجام بدی — مثلاً یک تصویر رنگی با چند شکل هندسی.

دارم تصویر رو آماده می‌کنم…


sample_image.png

اینم تصویری که برات ساختم:

الان می‌تونی این تصویر رو دانلود کنی و توی دفترچه Google Colab آپلودش کنی تا روش پردازش انجام بدی.

اگه بخوای، مرحله‌به‌مرحله بریم جلو تا روی همین تصویر با OpenCV کار کنیم.
 

saalek110

Well-Known Member
خیلی عالی! حالا مرحله‌به‌مرحله روی همین تصویری که ساختیم، در Google Colab پیش می‌ریم:


---

مرحله ۱: آپلود تصویر در Colab

در یک سلول جدید این کد رو بنویس و اجرا کن:
کد:
from google.colab import files
uploaded = files.upload()
()

سپس تصویر sample_image.png رو که دانلود کردی، از گوشی‌ات انتخاب کن و آپلود کن.
---

مرحله ۲: نمایش تصویر

بعد از آپلود، این کد رو اجرا کن:

import cv2
import matplotlib.pyplot as plt

image_path = list(uploaded.keys())[0]
img = cv2.imread(image_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # چون OpenCV رنگ‌ها رو برعکس می‌خونه

plt.imshow(img)
plt.axis('off')
plt.title("تصویر اصلی")
plt.show()


---

مرحله ۳: تبدیل به سیاه و سفید

الان می‌تونیم تصویر رو خاکستری (سیاه‌سفید) کنیم:

gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

plt.imshow(gray, cmap='gray')
plt.axis('off')
plt.title("تصویر سیاه و سفید")
plt.show()


---

اگر دوست داشتی بعدی مثلاً لبه‌یابی، مات‌کردن، یا فیلترهای جالب دیگه هم بگم.
 

saalek110

Well-Known Member
سالک: از بالای محل نوشتن ، من +code را زدم تا بتوانم اینو:

کد:
from google.colab import files
uploaded = files.upload()

پیست کنم و دکمه اجرای بغلش را بزنم....بعدش دکمه آپلود عکس اومد که عکسی که chatgpt عزیز ساخته بود را اپلود کردم.
 

saalek110

Well-Known Member
سالک: عکسی که لطف کرده بودی برامون ساخته بودی را آپلود کدم ، حالا چه کار کنم؟


عالیه! چون الان تصویر ساخته‌شده رو توی Colab آپلود کردی، بریم سراغ پردازش اون.

---

گام ۱: نمایش تصویر رنگی

در یه سلول جدید این کد رو بنویس و اجرا کن تا عکس رو ببینی:

کد:
import cv2

import matplotlib.pyplot as plt

# گرفتن نام فایل آپلودشده

کد:
image_path = list(uploaded.keys())[0]
image_path = list(uploaded.keys())[0]

# خواندن تصویر
کد:
img = cv2.imread(image_path)
کد:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# تبدیل BGR به RGB برای نمایش درست

# نمایش تصویر

کد:
plt.imshow(img)

سالک: من کدها را که تا اینجا اجرا کردم تصویر نمایش داده شد.تصویر زیر:

Screenshot_۲۰۲۵-۰۵-۱۵_۱۶۴۴۲۸.jpg

در عکس بالا دکمه code+ را با فلش قرمز نشان دادم. همون دکمه که باهاش سلول جدید می سازیم تا کدها را وارد کنیم.

plt.axis('off')
plt.title("تصویر رنگی اصلی")
plt.show()


---

گام ۲: تبدیل تصویر به سیاه و سفید

حالا همین تصویر رو خاکستری (سیاه و سفید) کن:

gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

plt.imshow(gray, cmap='gray')
plt.axis('off')
plt.title("تصویر سیاه و سفید")
plt.show()


---

گام ۳ (اختیاری): لبه‌یابی با فیلتر Canny

اگه خواستی لبه‌های شکل‌ها رو ببینی، اینو اجرا کن:

edges = cv2.Canny(gray, 100, 200)

plt.imshow(edges, cmap='gray')
plt.axis('off')
plt.title("لبه‌های تصویر")
plt.show()


---

اگه دوست داری الان یه کار خاص دیگه با عکس انجام بدیم، فقط بگو. مثلاً:

تشخیص رنگ‌ها

مات کردن

برش دادن

نوشتن متن روی عکس

ساخت تصویر جدید


چی دوست داری؟
 
آخرین ویرایش:

saalek110

Well-Known Member
سالک: با show عکس را برام نشان داد ، باقی کدها برای چیه؟ اینها:
plt.axis('off') plt.title("لبه‌های تصویر") plt.show()


عالی پرسیدی! این سه خط برای «زیباکردن و نمایش تصویر» هستن. توضیحشون:


---

plt.axis('off')

این خط باعث می‌شه اعداد و خطوط اطراف عکس (محور x و y) حذف بشن. چون برای عکس‌ها معمولاً نیازی به دیدن اون اعداد نیست.


سالک: chatgpt درست میگه. در عکس زیر می بینید که با آف کردن محورها و سپس کد نمایش عکس دیگه دور عکس ، اون اعداد و خطوط نیست:

Screenshot_۲۰۲۵-۰۵-۱۵_۱۶۵۲۰۰.jpg
---

plt.title("لبه‌های تصویر")

یه عنوان بالای عکس نشون می‌ده که مثلاً این تصویر چی رو نشون می‌ده. توی این مثال نوشته: «لبه‌های تصویر».

plt.show()

این خط خیلی مهمه. باعث می‌شه که تصویر واقعاً روی صفحه نمایش داده بشه. اگه این خط رو نزاری، هیچ‌چیزی نشون داده نمی‌شه.

پس در کل:

plt.axis('off') # حذف محور
plt.title("...") # نوشتن عنوان
plt.show() # نمایش تصویر

اگه خواستی می‌تونیم تمرین کنیم با تغییر title یا حتی رنگ‌گذاری خاص.
 

saalek110

Well-Known Member
این کد را کار می کنیم:

Python:
plt.imshow(img)
plt.axis('off')  # حذف محورهای x و y
plt.title("این تصویر رنگی اصلی است", fontsize=16, color='blue')  # عنوان آبی و بزرگ‌تر
plt.show()


گویا در زبان پاینون ، بعد این علامت # بقیه نوشته ها ، کامنت محسوب میشه ، پس کل کادر بالا را بریزید در یک سلول سایت گوگل کلاب...
کامنت نوشته ای است برای راهنمایی انسانها و توسط سیستم اجرا نمیشه.

نتیجه اجرای کدهای بالا:

Screenshot_۲۰۲۵-۰۵-۱۵_۱۶۵۷۴۳.jpg


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

saalek110

Well-Known Member
سالک:وقتشه به ما تبریک بگی chatgpt ، ما توانستم این کارها را بکنیم.


تبریک می‌گم! واقعاً آفرین به تو که با قدرت وارد دنیای پردازش تصویر شدی — اونم روی گوشی، با Google Colab! این کار برای خیلی‌ها سخته، اما تو انجامش دادی!

تو نه‌تنها:

دفترچه ساختی،

عکس ساختی و آپلود کردی،

بلکه پردازشش کردی، خاکستری‌اش کردی، لبه‌هاش رو دیدی،

و حتی تغییرات زیبایی روی نمایش دادی.


این یعنی یه شروع جدی برای برنامه‌نویسی تصویری، و تو کاملاً از پسش براومدی. به خودت افتخار کن!

حالا آماده‌ای بریم سمت پروژه‌های خلاقانه‌تر؟ مثلاً تشخیص چهره، افکت‌گذاری، یا نوشتن متن فارسی روی عکس؟
 

saalek110

Well-Known Member
شرح کدهای اولیه:
دو عکس زیر ، کدهایی است که در مرحله اول انجام دادیم تا محیط کار را آماده کنیم.....و عکس آپلود کردیم


Screenshot_۲۰۲۵-۰۵-۱۵_۱۷۰۵۲۹.jpgScreenshot_۲۰۲۵-۰۵-۱۵_۱۷۰۵۳۹.jpg

در کدهای بالا می بینید که یکی از کتابخانه ها را با نام plt ایمپورت کردیم....و بعدا از اسم plt برای انجام کارهایی استفاده کردیم.
 

saalek110

Well-Known Member
سالک:ببین ما عکس را نشان دادیم ، ولی تغییری رویش انجام ندادیم....بیا یک تغییری رویش انجام بدهیم


Chatgpt:
دقیقاً! کارت خیلی خوب بوده تا اینجا و حالا وقتشه یه تغییر واقعی روی عکس انجام بدیم.

بیایم یکی از این کارهای ساده و جالب رو روی عکس اجرا کنیم. مثلاً:

پیشنهاد تغییر:

نوشتن متن روی عکس (مثلاً "مرحله ۱ با موفقیت انجام شد")


---

اگه موافقی، کد زیر رو بزن:
Python:
# کپی از تصویر اصلی برای ویرایش

edited_img = img.copy()



# اضافه کردن متن فارسی (با فونت انگلیسی چون Colab از فونت فارسی پشتیبانی کامل نداره)

cv2.putText(edited_img, 'Stage 1 Complete!', (30, 270), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 255), 2)



# نمایش تصویر ویرایش‌شده

plt.imshow(edited_img)

plt.axis('off')

plt.title("تصویر با متن")

plt.show()
---

اگر بخوای می‌تونیم:

فیلتر رنگی بزنیم،
قسمتی از عکس رو برش بزنیم،
چند عکس رو کنار هم بذاریم.

کدها و نتیجه اجرا در عکس زیر دیده می شود:

Screenshot_۲۰۲۵-۰۵-۱۵_۱۷۲۳۳۱.jpg
 

saalek110

Well-Known Member
تغییر دایره قرمز به قهوه ای:

Python:
import numpy as np

# کپی از تصویر
brown_img = img.copy()

# تعریف محدوده رنگ قرمز در تصویر
lower_red = np.array([150, 0, 0])   # محدوده پایین قرمز
upper_red = np.array([255, 80, 80]) # محدوده بالا قرمز

# پیدا کردن ناحیه‌های قرمز
mask = cv2.inRange(brown_img, lower_red, upper_red)

# رنگ قهوه‌ای (در RGB)
brown_color = [150, 75, 0]

# اعمال رنگ قهوه‌ای به پیکسل‌های قرمز
brown_img[mask != 0] = brown_color

# نمایش تصویر نهایی
plt.imshow(brown_img)
plt.axis('off')
plt.title("دایره قرمز به قهوه‌ای تغییر یافت")
plt.show()
 

saalek110

Well-Known Member
شرح کدهای پست قبل:


حتما! شرح قدم به قدم کد تغییر رنگ دایره قرمز به قهوه‌ای:


---

import numpy as np

این خط برای استفاده از کتابخانه NumPy است که ابزارهای پردازش آرایه و ماتریس را فراهم می‌کند.



---

brown_img = img.copy()

یک کپی از تصویر اصلی می‌گیریم تا تصویر اصلی دست‌نخورده باقی بماند و روی این کپی تغییرات را اعمال کنیم.



---

lower_red = np.array([150, 0, 0]) # محدوده پایین قرمز
upper_red = np.array([255, 80, 80]) # محدوده بالا قرمز

این دو آرایه محدوده رنگ قرمز را تعریف می‌کنند. یعنی پیکسل‌هایی که در این بازه رنگی باشند، قرمز در نظر گرفته می‌شوند.

بازه براساس رنگ‌های RGB (قرمز، سبز، آبی) است.

مثلاً پیکسل‌هایی که مقدار قرمز‌شان بین 150 تا 255 و مقدار سبز و آبی پایین باشد، قرمز محسوب می‌شوند.



---

mask = cv2.inRange(brown_img, lower_red, upper_red)

این خط یک ماسک باینری می‌سازد که در آن پیکسل‌هایی که داخل محدوده رنگ قرمز هستند مقدار 255 (سفید) و بقیه مقدار 0 (سیاه) می‌گیرند.

یعنی فقط نقاط قرمز مشخص می‌شوند.



---

brown_color = [150, 75, 0]

رنگ قهوه‌ای مورد نظر را تعریف می‌کنیم. این هم به صورت RGB است (قرمز 150، سبز 75، آبی 0).



---

brown_img[mask != 0] = brown_color

اینجا به همه پیکسل‌هایی که در ماسک مقدار سفید (255) دارند یعنی آن‌هایی که قرمز بودند، رنگ قهوه‌ای می‌دهیم.



---

plt.imshow(brown_img)
plt.axis('off')
plt.title("دایره قرمز به قهوه‌ای تغییر یافت")
plt.show()

تصویر ویرایش‌شده را نمایش می‌دهد بدون محور و با عنوان مشخص.



---

اگر بخوای می‌تونم کمک کنم رنگ قهوه‌ای دقیق‌تر یا روشن‌تر/تیره‌تر باشه یا توضیح بیشتری بدم.
 

saalek110

Well-Known Member
سالک: عالی بود ، کلی چیز یاد گرفتیم امروز

Chatgpt: خیلی خوشحالم که اینقدر برات مفید بوده!
تو واقعاً عالی پیش رفتی و با حوصله یاد گرفتی.
هر وقت خواستی ادامه بدیم یا پروژه جدیدی شروع کنیم، من اینجا هستم.

تبریک می‌گم به خودت برای این پیشرفت فوق‌العاده!
آفرین به تو!
 

جدیدترین ارسال ها

بالا