آموزش برنامه‌نویسی پایتون و هوش مصنوعی
140 subscribers
358 photos
190 videos
41 files
172 links
🎯 یادگیری پایتون با رویکردی متفاوت
🚀 آموزش‌های کاملاً عملی و پروژه‌محور
💻 مسیر تبدیل شدن به یک برنامه‌نویس حرفه‌ای
🌟 فرقی نداره مبتدی هستی یا پیشرفته، از هر سطحی شروع کن و پایتون رو اصولی یاد بگیر
📩 ارتباط با ادمین: @YMahmoodian
09156519984
Download Telegram
فصل کامل: وب‌اسکرپینگ و کار با API در پایتون


درخواست‌های HTTP (Requests)

دریافت داده‌ها از وب‌سایت‌ها

تجزیه HTML با BeautifulSoup

دانلود فایل و تصویر

کار با API و JSON

وب‌اسکرپینگ پیشرفته (Session، Headers، Auth)



---

بخش ۱ – مقدمات Requests (سوال 1–20)

1. نصب کتابخانه Requests

pip install requests

2. وارد کردن Requests

import requests

3. ارسال درخواست GET

response = requests.get("https://example.com")
print(response.text)

4. وضعیت درخواست

print(response.status_code)

5. بررسی موفقیت

if response.ok:
print("Success!")

6. هدرها

print(response.headers)

7. دریافت باینری (مثل تصویر)

content = response.content

8. ذخیره در فایل

with open("page.html", "wb") as f:
f.write(response.content)

9. ارسال پارامتر در URL

params = {"q": "python"}
requests.get("https://www.google.com/search", params=params)

10. درخواست POST

data = {"username": "admin", "password": "123"}
requests.post("https://example.com/login", data=data)

11. ارسال JSON

json_data = {"name": "Ali", "age": 25}
requests.post("https://example.com/api", json=json_data)

12. هدر سفارشی

headers = {"User-Agent": "MyApp"}
requests.get("https://example.com", headers=headers)

13. Timeout

requests.get("https://example.com", timeout=5)

14. Session

s = requests.Session()
s.get("https://example.com")

15. کوکی‌ها

print(response.cookies)

16. ارسال کوکی

cookies = {"session": "abcd"}
requests.get("https://example.com", cookies=cookies)

17. بررسی Redirect

print(response.history)

18. جلوگیری از Redirect

requests.get("https://example.com", allow_redirects=False)

19. دانلود تصویر

img = requests.get("https://example.com/image.jpg")
with open("image.jpg", "wb") as f:
f.write(img.content)

20. آپلود فایل

files = {"file": open("test.txt", "rb")}
requests.post("https://example.com/upload", files=files)


---

بخش ۲ – کار با BeautifulSoup (سوال 21–40)

21. نصب

pip install beautifulsoup4

22. وارد کردن

from bs4 import BeautifulSoup

23. ایجاد شیء Soup

soup = BeautifulSoup(response.text, "html.parser")

24. یافتن اولین تگ

print(soup.find("h1"))

25. یافتن همه تگ‌ها

print(soup.find_all("p"))

26. دسترسی به متن

print(soup.find("p").get_text())

27. دسترسی به ویژگی

print(soup.find("a")["href"])

28. جستجو با کلاس

soup.find_all("div", class_="content")

29. جستجو با id

soup.find(id="main")

30. انتخاب با CSS Selector

soup.select("div.content > p")

31. یافتن چندین نوع تگ

soup.find_all(["h1", "h2"])

32. یافتن با شرط تابع

soup.find_all(lambda tag: tag.name == "p" and "Python" in tag.text)

33. تغییر متن تگ

tag = soup.find("h1")
tag.string = "New Title"

34. حذف تگ

tag.decompose()

35. پیمایش والد

tag.parent

36. پیمایش فرزند

tag.contents

37. پیمایش خواهر

tag.find_next_sibling()

38. پیمایش قبلی

tag.find_previous_sibling()

39. یافتن لینک‌ها

for a in soup.find_all("a", href=True):
print(a["href"])

40. ذخیره HTML تمیز

with open("clean.html", "w", encoding="utf-8") as f:
f.write(soup.prettify())


---

بخش ۳ – کار با API و JSON (سوال 41–60)

41. دریافت JSON

r = requests.get("https://api.github.com")
print(r.json())

42. ارسال JSON

requests.post("https://example.com/api", json={"id": 1})

43. پردازش JSON

data = r.json()
print(data["current_user_url"])

44. استفاده از پارامتر در API

requests.get("https://api.agify.io", params={"name": "Ali"})

45. بررسی نرخ محدودیت

print(r.headers.get("X-RateLimit-Limit"))

46. API با احراز هویت

requests.get("https://api.github.com/user", auth=("user", "pass"))

47. API با Token

headers = {"Authorization": "Bearer TOKEN"}
requests.get("https://api.example.com", headers=headers)

48. API با Session

s = requests.Session()
s.headers.update({"Authorization": "Bearer TOKEN"})

49. بررسی خطا

r.raise_for_status()

50. API POST با فایل

files = {"file": open("test.csv", "rb")}
requests.post("https://api.example.com/upload", files=files)

51. API PUT

requests.put("https://api.example.com/user/1", json={"name": "New"})

52. API DELETE

requests.delete("https://api.example.com/user/1")

53. بررسی Content-Type

print(r.headers["Content-Type"])

54. ذخیره JSON در فایل
import json
with open("data.json", "w") as f:
json.dump(r.json(), f)

55. خواندن JSON از فایل

with open("data.json") as f:
data = json.load(f)

56. تبدیل JSON به رشته

json.dumps(data)

57. تبدیل رشته به JSON

json.loads('{"a": 1}')

58. فیلتر داده API

users = [u for u in data if u["age"] > 30]

59. پردازش API در حلقه

for user in data["users"]:
print(user["name"])

60. بررسی وجود کلید

if "users" in data:
print("Users exist")


---

بخش ۴ – وب‌اسکرپینگ پیشرفته (سوال 61–80)

61. ریکوئست با Proxy

proxies = {"http": "http://proxy.com:8080"}
requests.get("https://example.com", proxies=proxies)

62. ریکوئست HTTPS ناامن

requests.get("https://self-signed.badssl.com/", verify=False)

63. اسکرپینگ با Headers مرورگر

headers = {"User-Agent": "Mozilla/5.0"}
requests.get("https://example.com", headers=headers)

64. اسکرپینگ صفحات متعدد

for page in range(1, 6):
requests.get(f"https://example.com?page={page}")

65. دریافت و ذخیره PDF

pdf = requests.get("https://example.com/file.pdf")
with open("file.pdf", "wb") as f:
f.write(pdf.content)

66. دانلود دسته‌ای تصاویر

urls = ["img1.jpg", "img2.jpg"]
for url in urls:
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)

67. Session Login

s = requests.Session()
s.post("https://example.com/login", data={"u": "admin", "p": "123"})

68. استفاده از API بعد از Login

r = s.get("https://example.com/profile")

69. استخراج جدول HTML

table = soup.find("table")

70. ذخیره جدول در CSV

import csv
rows = table.find_all("tr")
with open("table.csv", "w", newline="") as f:
writer = csv.writer(f)
for row in rows:
cols = [c.text for c in row.find_all(["td", "th"])]
writer.writerow(cols)

71. شبیه‌سازی فرم HTML

requests.post("https://example.com/form", data={"name": "Ali"})

72. استفاده از Referer

headers = {"Referer": "https://google.com"}

73. محدودیت نرخ درخواست

import time
time.sleep(2)

74. ذخیره HTML صفحه

with open("page.html", "w", encoding="utf-8") as f:
f.write(response.text)

75. جستجوی کلمه خاص در HTML

if "Python" in response.text:
print("Found!")

76. استخراج متا تگ‌ها

meta = soup.find_all("meta")

77. استخراج عنوان صفحه

print(soup.title.string)

78. استخراج اسکریپت‌ها

scripts = soup.find_all("script")

79. استخراج تصاویر

imgs = soup.find_all("img", src=True)

80. دانلود همه تصاویر

for img in imgs:
url = img["src"]
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)


---

بخش ۵ – تمرین‌های ترکیبی Requests + API + BeautifulSoup (سوال 81–100)

81. جستجوی کتاب در Google Books API
82. دریافت نرخ ارز از API آزاد
83. اسکرپینگ اخبار از یک سایت خبری
84. استخراج قیمت‌ها از سایت فروشگاهی
85. دانلود عکس پروفایل کاربر از API
86. جمع‌آوری ایمیل‌ها از HTML
87. ذخیره داده‌های API در دیتابیس SQLite
88. دانلود و پردازش JSON هواشناسی
89. اسکرپینگ پست‌های وبلاگ و ذخیره در CSV
90. استخراج لیست محصولات یک دسته‌بندی
91. اتصال به API تلگرام و ارسال پیام
92. دانلود و ذخیره PDF گزارش
93. استخراج لینک‌های دانلود از HTML
94. ساخت کرالر برای چند صفحه
95. پردازش داده‌های API و نمایش نمودار
96. استفاده از API ترجمه گوگل
97. ذخیره تصاویر API به پوشه
98. دریافت داده و ارسال دوباره به API دیگر
99. ساخت گزارش از داده‌های اسکرپ شده
100. پروژه نهایی: ترکیب API + اسکرپینگ + دیتابیس


---
فصل رابط گرافیکی (GUI)

---

بخش ۱ – مبانی ایجاد پنجره و ویجت‌ها (سوال 1–20)

1. ایجاد یک پنجره ساده

import tkinter as tk
root = tk.Tk()
root.mainloop()

2. تغییر عنوان پنجره

root.title("My First GUI")

3. تغییر اندازه اولیه پنجره

root.geometry("400x300")

4. اضافه کردن یک Label

label = tk.Label(root, text="Hello, Tkinter!")
label.pack()

5. تغییر رنگ متن Label

label.config(fg="red")

6. تغییر رنگ پس‌زمینه پنجره

root.configure(bg="lightblue")

7. اضافه کردن دکمه ساده

btn = tk.Button(root, text="Click Me")
btn.pack()

8. تعریف تابع برای دکمه

def say_hello():
print("Hello!")
btn = tk.Button(root, text="Click", command=say_hello)
btn.pack()

9. اضافه کردن ورودی متن

entry = tk.Entry(root)
entry.pack()

10. گرفتن مقدار ورودی

def show_input():
print(entry.get())

11. اضافه کردن TextBox چند خطی

text_box = tk.Text(root, height=5, width=30)
text_box.pack()

12. افزودن Checkbutton

chk_var = tk.BooleanVar()
chk = tk.Checkbutton(root, text="Accept", variable=chk_var)
chk.pack()

13. افزودن Radiobutton

r_var = tk.StringVar(value="A")
tk.Radiobutton(root, text="Option A", variable=r_var, value="A").pack()
tk.Radiobutton(root, text="Option B", variable=r_var, value="B").pack()

14. افزودن Listbox

lst = tk.Listbox(root)
lst.insert(1, "Apple")
lst.insert(2, "Banana")
lst.pack()

15. انتخاب آیتم در Listbox

def show_selected():
print(lst.get(lst.curselection()))

16. استفاده از Frame

frame = tk.Frame(root, bg="gray")
frame.pack()

17. افزودن Scrollbar

scroll = tk.Scrollbar(root)
scroll.pack(side=tk.RIGHT, fill=tk.Y)

18. تغییر آیکون پنجره

root.iconbitmap("icon.ico")

19. بستن پنجره با کد

root.destroy()

20. اجرای حلقه اصلی

root.mainloop()


---
بخش ۲ – مدیریت رویدادها و Layout پیشرفته (سوال 21–40)
21. تغییر متن Label با کلیک دکمه
def change_text(): label.config(text="Text Changed!") btn = tk.Button(root, text="Change", command=change_text) btn.pack()
22. گرفتن رویداد کلیک ماوس
def on_click(event): print(f"Clicked at {event.x}, {event.y}") root.bind("<Button-1>", on_click)
23. گرفتن رویداد کلید کیبورد
def on_key(event): print("Key pressed:", event.char) root.bind("<Key>", on_key)
24. استفاده از grid برای چیدمان
tk.Label(root, text="Name").grid(row=0, column=0) tk.Entry(root).grid(row=0, column=1)
25. استفاده از place برای موقعیت دقیق
tk.Label(root, text="Fixed Position").place(x=50, y=50)
26. افزودن منوی کشویی (Menu)
menu = tk.Menu(root) root.config(menu=menu) file_menu = tk.Menu(menu, tearoff=0) menu.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="Exit", command=root.quit)
27. استفاده از MessageBox
from tkinter import messagebox messagebox.showinfo("Title", "This is a message")
28. سوال Yes/No با MessageBox
if messagebox.askyesno("Confirm", "Do you agree?"): print("Yes!")
29. انتخاب رنگ با ColorChooser
from tkinter import colorchooser color = colorchooser.askcolor()[1] print(color)
30. انتخاب فایل با FileDialog
from tkinter import filedialog file_path = filedialog.askopenfilename() print(file_path)
31. انتخاب چند فایل
files = filedialog.askopenfilenames() print(files)
32. انتخاب پوشه
folder = filedialog.askdirectory() print(folder)
33. باز کردن تصویر با PhotoImage
img = tk.PhotoImage(file="image.png") tk.Label(root, image=img).pack()
34. تغییر فونت متن
import tkinter.font as tkFont label.config(font=("Arial", 16, "bold"))
35. Tooltip ساده
def show_tooltip(event): print("Tooltip: Click the button!") btn.bind("<Enter>", show_tooltip)
36. تغییر اندازه ویجت هنگام تغییر پنجره
root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1)
37. ایجاد چند پنجره (Toplevel)
win = tk.Toplevel(root) win.title("New Window")
38. بستن پنجره فرعی
win.destroy()
39. غیرفعال کردن دکمه
btn.config(state=tk.DISABLED)
40. فعال کردن دوباره دکمه
btn.config(state=tk.NORMAL)
41. استفاده از Spinbox
spin = tk.Spinbox(root, from_=0, to=10) spin.pack()
42. گرفتن مقدار Spinbox
print(spin.get())
43. استفاده از Listbox
lb = tk.Listbox(root) lb.insert(1, "Python") lb.insert(2, "Java") lb.pack()
44. انتخاب آیتم از Listbox
def show_selected(event): print(lb.get(lb.curselection())) lb.bind("<<ListboxSelect>>", show_selected)
45. استفاده از Canvas برای ترسیم خط
canvas = tk.Canvas(root, width=200, height=200) canvas.pack() canvas.create_line(0, 0, 200, 200, fill="red", width=3)
46. ترسیم دایره در Canvas
canvas.create_oval(50, 50, 150, 150, fill="blue")
47. ترسیم مستطیل در Canvas
canvas.create_rectangle(20, 20, 100, 80, fill="green")
48. افزودن متن به Canvas
canvas.create_text(100, 100, text="Hello", font=("Arial", 14))
49. حرکت شیء در Canvas
rect = canvas.create_rectangle(50, 50, 100, 100, fill="red") canvas.move(rect, 10, 0)
50. استفاده از Progressbar
from tkinter import ttk pb = ttk.Progressbar(root, length=200, mode="determinate") pb["value"] = 50 pb.pack()
51. افزایش Progressbar
pb["value"] += 10
52. حالت نامحدود Progressbar
pb.config(mode="indeterminate") pb.start()
53. استفاده از Treeview
tree = ttk.Treeview(root) tree["columns"] = ("one", "two") tree.heading("one", text="Column 1") tree.heading("two", text="Column 2") tree.insert("", "end", values=("A", "B")) tree.pack()
54. افزودن نوار اسکرول
scroll = tk.Scrollbar(root, orient="vertical", command=lb.yview) lb.config(yscrollcommand=scroll.set) scroll.pack(side="right", fill="y")
55. نمایش پاپ‌آپ منو با کلیک راست
popup = tk.Menu(root, tearoff=0) popup.add_command(label="Option 1") def show_popup(event): popup.post(event.x_root, event.y_root) root.bind("<Button-3>", show_popup)
56. تغییر رنگ پس‌زمینه پنجره
root.config(bg="lightblue")
57. استفاده از Frame برای گروه‌بندی
frame = tk.Frame(root, bg="yellow", padx=10, pady=10) frame.pack()
58. افزودن ویجت به Frame
tk.Label(frame, text="Inside Frame").pack()
59. تغییر آیکون پنجره
root.iconbitmap("icon.ico")
60. تغییر حالت تمام‌صفحه
root.attributes("-fullscreen", True)
بخش ۴ – پروژه‌های کوچک (سوال 61–80)
61. تایمر ساده
counter = 0 def update_timer(): global counter counter += 1 label.config(text=str(counter)) root.after(1000, update_timer) update_timer()
62. ساعت دیجیتال
import time def clock(): label.config(text=time.strftime("%H:%M:%S")) root.after(1000, clock) clock()
63. تغییر پس‌زمینه خودکار
colors = ["red", "blue", "green"] def change_bg(): root.config(bg=colors[counter % len(colors)]) root.after(1000, change_bg) change_bg()
64. شمارش معکوس
time_left = 10 def countdown(): global time_left if time_left > 0: time_left -= 1 label.config(text=str(time_left)) root.after(1000, countdown) countdown()
65. ماشین حساب ساده
expr = "" def press(num): global expr expr += str(num) label.config(text=expr) def equal(): global expr label.config(text=str(eval(expr))) expr = ""
66. دفترچه یادداشت ساده
text_area = tk.Text(root) text_area.pack()
67. ذخیره متن دفترچه یادداشت
def save_file(): with open("note.txt", "w") as f: f.write(text_area.get("1.0", tk.END))
68. باز کردن فایل در دفترچه یادداشت
def open_file(): with open("note.txt") as f: text_area.delete("1.0", tk.END) text_area.insert(tk.END, f.read())
69. تغییر متن بر اساس انتخاب منو
def set_text(): label.config(text="Menu Selected") file_menu.add_command(label="Set Text", command=set_text)
70. تغییر اندازه فونت Text
text_area.config(font=("Arial", 14))
71. نمایش تصویر انتخابی کاربر
path = filedialog.askopenfilename() img = tk.PhotoImage(file=path) tk.Label(root, image=img).pack()
72. تغییر زبان برنامه
lang = tk.StringVar(value="English") tk.OptionMenu(root, lang, "English", "Persian", "Arabic").pack()
73. ایجاد دکمه‌های داینامیک
for i in range(5): tk.Button(root, text=f"Button {i}").pack()
74. فرم ورود ساده
tk.Label(root, text="Username").pack() username = tk.Entry(root) username.pack() tk.Label(root, text="Password").pack() password = tk.Entry(root, show="*") password.pack()
75. بررسی ورود کاربر
def login(): if username.get() == "admin" and password.get() == "123": messagebox.showinfo("Login", "Welcome!")
76. اسلایدشو تصویر
images = ["img1.png", "img2.png"] index = 0 def slideshow(): global index img = tk.PhotoImage(file=images[index]) label.config(image=img) label.image = img index = (index + 1) % len(images) root.after(2000, slideshow) slideshow()
77. کشیدن با ماوس روی Canvas
def paint(event): x1, y1 = (event.x - 2), (event.y - 2) x2, y2 = (event.x + 2), (event.y + 2) canvas.create_oval(x1, y1, x2, y2, fill="black") canvas.bind("<B1-Motion>", paint)
78. بازی کلیک سریع
score = 0 def click_game(): global score score += 1 label.config(text=str(score))
79. نمایش پیشرفت تایمر در Progressbar
pb["value"] = (counter / 10) * 100
80. دکمه تغییر حالت تاریک/روشن
def toggle_theme(): current = root.cget("bg") root.config(bg="black" if current != "black" else "white")
بخش ۵ – پروژه‌های کامل (سوال 81–100)
81. بازی حدس عدد
import random number = random.randint(1, 10) def guess(): if int(entry.get()) == number: messagebox.showinfo("Win", "Correct!")
82. بازی حرکت دکمه فرار
def move_btn(event): btn.place(x=random.randint(0, 300), y=random.randint(0, 300)) btn.bind("<Enter>", move_btn)
83. تایمر Pomodoro
work_time = 25*60
84. برنامه مدیریت کارها (To-Do List)
tasks = []
85. جستجوی فایل در پوشه و نمایش
from pathlib import Path
86. ساخت گالری عکس
# مشابه اسلایدشو
87. ماشین حساب علمی
import math
88. برنامه ثبت هزینه‌ها
expenses = []
89. نمایش آب‌وهوا (API)
import requests
90. ساخت چت‌روم ساده (Socket)
import socket
91. نمایش PDF در Tkinter
import fitz
92. ادغام PDF با دکمه
import PyPDF2
93. ارسال ایمیل از طریق Tkinter
import smtplib
94. اجرای دستورات ترمینال
import subprocess
95. برنامه مدیریت رمز عبور
import hashlib
96. بازی مار با Tkinter
# canvas + after
97. بازی پینگ پنگ
# canvas + حرکت توپ
98. پخش موزیک
import pygame
99. ویرایش تصویر (PIL)
from PIL import Image
100. خروج از برنامه با کلید Esc
root.bind("<Escape>", lambda e: root.quit())
فصل هوش مصنوعی و یادگیری ماشین/عمیق

---

بخش ۱: مبانی هوش مصنوعی و داده (سوال 1–20)

1. ایجاد یک آرایه ساده با NumPy

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)

2. ایجاد آرایه صفرها و یک‌ها

import numpy as np
zeros = np.zeros((3, 3))
ones = np.ones((2, 4))
print(zeros)
print(ones)

3. ایجاد آرایه با مقادیر تصادفی

import numpy as np
rand_arr = np.random.rand(3, 3)
print(rand_arr)

4. ایجاد آرایه با مقادیر عددی پشت سر هم

import numpy as np
seq = np.arange(0, 10, 2)
print(seq)

5. تغییر شکل (reshape) آرایه

import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr)

6. محاسبه میانگین، ماکسیمم و مینیمم

import numpy as np
arr = np.array([5, 8, 2, 9])
print(arr.mean(), arr.max(), arr.min())

7. محاسبه انحراف معیار و واریانس

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.std(), arr.var())

8. خواندن یک فایل CSV با Pandas

import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())

9. نمایش اطلاعات کلی DataFrame

import pandas as pd
df = pd.read_csv("data.csv")
print(df.info())

10. نمایش آمار توصیفی داده‌ها

import pandas as pd
df = pd.read_csv("data.csv")
print(df.describe())

11. انتخاب یک ستون خاص

import pandas as pd
df = pd.read_csv("data.csv")
print(df["Age"])

12. انتخاب چند ستون خاص

import pandas as pd
df = pd.read_csv("data.csv")
print(df[["Name", "Age"]])

13. فیلتر کردن ردیف‌ها با شرط

import pandas as pd
df = pd.read_csv("data.csv")
print(df[df["Age"] > 30])

14. مرتب‌سازی داده‌ها بر اساس یک ستون

import pandas as pd
df = pd.read_csv("data.csv")
print(df.sort_values("Age"))

15. پر کردن مقادیر گمشده با مقدار خاص

import pandas as pd
df = pd.read_csv("data.csv")
df.fillna(0, inplace=True)
print(df)

16. حذف ردیف‌هایی با مقادیر گمشده

import pandas as pd
df = pd.read_csv("data.csv")
df.dropna(inplace=True)
print(df)

17. تغییر نام ستون‌ها

import pandas as pd
df = pd.read_csv("data.csv")
df.rename(columns={"Age": "Years"}, inplace=True)
print(df)

18. ایجاد یک ستون جدید بر اساس محاسبات

import pandas as pd
df = pd.read_csv("data.csv")
df["Age_plus_5"] = df["Age"] + 5
print(df)

19. ذخیره DataFrame به CSV

import pandas as pd
df = pd.read_csv("data.csv")
df.to_csv("new_data.csv", index=False)

20. ترکیب دو DataFrame

import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df2 = pd.DataFrame({"Name": ["Reza", "Mina"], "Age": [22, 35]})
merged = pd.concat([df1, df2])
print(merged)


---
---

بخش ۲: NumPy و Pandas پیشرفته (سوال 21–40)

21. انتخاب یک بخش خاص از آرایه (Slicing)

import numpy as np
arr = np.arange(10)
print(arr[2:7])

22. انتخاب سطر و ستون خاص از ماتریس

import numpy as np
arr = np.arange(1, 10).reshape(3, 3)
print(arr[1, 2]) # سطر دوم، ستون سوم

23. عملیات جمع و ضرب عنصر به عنصر

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a * b)

24. ضرب ماتریسی

import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))

25. ترانهاده (Transpose) یک ماتریس

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)

26. انتخاب داده‌ها با ماسک شرطی

import numpy as np
arr = np.arange(10)
print(arr[arr > 5])

27. جایگزینی مقادیر بر اساس شرط

import numpy as np
arr = np.arange(10)
arr[arr < 5] = 0
print(arr)

28. پیدا کردن اندیس بیشترین مقدار

import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmax(arr))

29. پیدا کردن اندیس کمترین مقدار

import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmin(arr))

30. ذخیره و بارگذاری آرایه NumPy

import numpy as np
arr = np.arange(5)
np.save("array.npy", arr)
loaded = np.load("array.npy")
print(loaded)

31. گروه‌بندی داده‌ها در Pandas

import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali"], "Score": [90, 85, 95]})
print(df.groupby("Name").mean())

32. شمارش تعداد هر مقدار در یک ستون

import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali", "Mina"]})
print(df["Name"].value_counts())

33. ادغام دو جدول بر اساس ستون مشترک

import pandas as pd
df1 = pd.DataFrame({"ID": [1, 2], "Name": ["Ali", "Sara"]})
df2 = pd.DataFrame({"ID": [1, 2], "Score": [90, 85]})
merged = pd.merge(df1, df2, on="ID")
print(merged)

34. تبدیل ستون به نوع داده جدید

import pandas as pd
df = pd.DataFrame({"Age": ["25", "30", "35"]})
df["Age"] = df["Age"].astype(int)
print(df)

35. انتخاب سطر با اندیس خاص

import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Mina"]})
print(df.iloc[1])

36. تغییر اندیس DataFrame

import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.index = ["A", "B"]
print(df)

37. ادغام داده‌ها با append

import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali"], "Age": [25]})
df2 = pd.DataFrame({"Name": ["Sara"], "Age": [30]})
print(df1.append(df2, ignore_index=True))

38. Pivot Table در Pandas

import pandas as pd
df = pd.DataFrame({
"Name": ["Ali", "Sara", "Ali"],
"Subject": ["Math", "Math", "English"],
"Score": [90, 85, 95]
})
print(df.pivot_table(values="Score", index="Name", columns="Subject"))

39. ذخیره DataFrame به Excel

import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.to_excel("data.xlsx", index=False)

40. خواندن فایل Excel

import pandas as pd
df = pd.read_excel("data.xlsx")
print(df)
(سوال 41–100) و اینطوری کامل میشه.
بخش ۳: مصورسازی داده‌ها (Matplotlib / Seaborn) — سوال 41–60
41. رسم یک نمودار خطی ساده
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] plt.plot(x, y) plt.show()
42. تغییر رنگ و سبک خط
plt.plot(x, y, color='red', linestyle='--', marker='o') plt.show()
43. افزودن عنوان و برچسب محورها
plt.plot(x, y) plt.title("My Chart") plt.xlabel("X Axis") plt.ylabel("Y Axis") plt.show()
44. رسم چند خط در یک نمودار
plt.plot(x, y, label="Squared") plt.plot(x, [i**3 for i in x], label="Cubed") plt.legend() plt.show()
45. رسم نمودار میله‌ای (Bar Chart)
plt.bar(["A", "B", "C"], [3, 7, 5]) plt.show()
46. نمودار میله‌ای افقی
plt.barh(["A", "B", "C"], [3, 7, 5]) plt.show()
47. رسم نمودار دایره‌ای (Pie Chart)
plt.pie([30, 50, 20], labels=["A", "B", "C"], autopct="%1.1f%%") plt.show()
48. رسم نمودار Scatter
plt.scatter([5, 7, 8], [7, 8, 6]) plt.show()
49. تغییر اندازه شکل
plt.figure(figsize=(8, 5)) plt.plot(x, y) plt.show()
50. ذخیره نمودار به فایل
plt.plot(x, y) plt.savefig("chart.png")
51. استفاده از Seaborn برای نمودار خطی
import seaborn as sns sns.lineplot(x=[1, 2, 3], y=[4, 5, 6]) plt.show()
52. نمودار Scatter با Seaborn
sns.scatterplot(x=[5, 7, 8], y=[7, 8, 6]) plt.show()
53. نمودار جعبه‌ای (Boxplot)
sns.boxplot(x=[7, 8, 5, 6, 9]) plt.show()
54. نمودار Histogram
sns.histplot([1, 2, 2, 3, 3, 3, 4]) plt.show()
55. Heatmap با Seaborn
import numpy as np data = np.random.rand(3, 3) sns.heatmap(data, annot=True) plt.show()
56. Pairplot در Seaborn
import pandas as pd df = sns.load_dataset("iris") sns.pairplot(df, hue="species") plt.show()
57. اضافه کردن رنگ‌بندی به نمودار میله‌ای
sns.barplot(x=["A", "B", "C"], y=[3, 7, 5], palette="coolwarm") plt.show()
58. رسم KDE Plot
sns.kdeplot([1, 2, 2, 3, 4, 5]) plt.show()
59. رسم نمودار با DataFrame مستقیم
df = pd.DataFrame({"x": [1, 2, 3], "y": [4, 5, 6]}) sns.lineplot(data=df, x="x", y="y") plt.show()
60. ذخیره نمودار Seaborn
plot = sns.lineplot(x=[1, 2, 3], y=[4, 5, 6]) plt.savefig("seaborn_chart.png")
بخش ۴: مقدمات یادگیری ماشین (scikit-learn) — سوال 61–80
61. نصب scikit-learn
pip install scikit-learn
62. وارد کردن کتابخانه‌های پایه
from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression
63. ساخت داده نمونه با NumPy
import numpy as np X = np.array([[1], [2], [3], [4]]) y = np.array([2, 4, 6, 8])
64. تقسیم داده به آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
65. ایجاد مدل رگرسیون خطی و آموزش
model = LinearRegression() model.fit(X_train, y_train)
66. پیش‌بینی مقادیر
predictions = model.predict(X_test) print(predictions)
67. محاسبه دقت مدل
print(model.score(X_test, y_test))
68. مدل طبقه‌بندی با Logistic Regression
from sklearn.linear_model import LogisticRegression X = [[0, 0], [1, 1]] y = [0, 1] clf = LogisticRegression().fit(X, y) print(clf.predict([[2, 2]]))
69. استفاده از Decision Tree
from sklearn.tree import DecisionTreeClassifier clf = DecisionTreeClassifier().fit(X, y)
70. رسم درخت تصمیم
from sklearn import tree tree.plot_tree(clf) plt.show()
71. مدل Random Forest
from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier().fit(X, y)
72. نرمال‌سازی داده‌ها
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X)
73. استانداردسازی داده‌ها
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_std = scaler.fit_transform(X)
74. استفاده از KNN
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3).fit(X, y)
75. مدل SVM
from sklearn import svm clf = svm.SVC().fit(X, y)
76. Confusion Matrix
from sklearn.metrics import confusion_matrix print(confusion_matrix(y_test, model.predict(X_test)))
77. Classification Report
from sklearn.metrics import classification_report print(classification_report(y_test, model.predict(X_test)))
78. Cross Validation
from sklearn.model_selection import cross_val_score scores = cross_val_score(model, X, y, cv=5) print(scores)
79. Grid Search برای پیدا کردن بهترین پارامتر
from sklearn.model_selection import GridSearchCV param_grid = {'n_neighbors': [3, 5, 7]} grid = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5) grid.fit(X, y)
80. ذخیره مدل آموزش‌دیده
import joblib joblib.dump(model, "model.pkl")
بخش ۵: یادگیری عمیق با Keras / TensorFlow — سوال 81–100
81. نصب TensorFlow
pip install tensorflow
82. وارد کردن Keras
from tensorflow import keras from tensorflow.keras import layers
83. ساخت مدل Sequential
model = keras.Sequential([ layers.Dense(64, activation="relu"), layers.Dense(1) ])
84. کامپایل مدل
model.compile(optimizer="adam", loss="mse")
85. تولید داده نمونه
import numpy as np X = np.random.rand(100, 3) y = np.random.rand(100, 1)
86. آموزش مدل
model.fit(X, y, epochs=10)
87. پیش‌بینی با مدل
print(model.predict(X[:5]))
88. ذخیره مدل
model.save("my_model.h5")
89. بارگذاری مدل ذخیره‌شده
loaded_model = keras.models.load_model("my_model.h5")
90. افزودن Dropout برای جلوگیری از overfitting
model = keras.Sequential([ layers.Dense(64, activation="relu"), layers.Dropout(0.5), layers.Dense(1) ])
91. استفاده از تابع فعال‌سازی sigmoid
layers.Dense(1, activation="sigmoid")
92. مدل طبقه‌بندی دودویی
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
93. مدل طبقه‌بندی چندکلاسه
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
94. استفاده از EarlyStopping
callback = keras.callbacks.EarlyStopping(monitor="loss", patience=3) model.fit(X, y, epochs=50, callbacks=[callback])
95. ایجاد شبکه کانولوشنی (CNN)
model = keras.Sequential([ layers.Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 1)), layers.MaxPooling2D((2, 2)), layers.Flatten(), layers.Dense(64, activation="relu"), layers.Dense(10, activation="softmax") ])
96. آموزش مدل CNN با داده MNIST
from tensorflow.keras.datasets import mnist (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(-1, 28, 28, 1) / 255.0 X_test = X_test.reshape(-1, 28, 28, 1) / 255.0
97. One-hot encoding برچسب‌ها
y_train = keras.utils.to_categorical(y_train, 10) y_test = keras.utils.to_categorical(y_test, 10)
98. آموزش مدل
model.fit(X_train, y_train, epochs=5, validation_data=(X_test, y_test))
99. ارزیابی مدل
model.evaluate(X_test, y_test)
100. پیش‌بینی و نمایش خروجی
import numpy as np pred = model.predict(X_test[:1]) print(np.argmax(pred))
فصل بعد: پردازش تصویر با OpenCV


---

بخش ۱ – شروع کار با OpenCV (سوال 1 تا 20)

1. نصب OpenCV در پایتون

pip install opencv-python

2. وارد کردن کتابخانه OpenCV

import cv2

3. خواندن یک تصویر از فایل

img = cv2.imread("image.jpg")

4. نمایش تصویر در پنجره

cv2.imshow("My Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. تغییر اندازه تصویر

resized = cv2.resize(img, (300, 200))

6. ذخیره تصویر در فایل جدید

cv2.imwrite("new_image.jpg", resized)

7. خواندن تصویر به صورت سیاه و سفید

gray = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)

8. گرفتن اطلاعات ابعاد تصویر

height, width, channels = img.shape

9. بریدن (Crop) تصویر

crop = img[50:200, 100:300]

10. چرخاندن تصویر

rotated = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)

11. وارونه کردن تصویر افقی

flipped = cv2.flip(img, 1)

12. وارونه کردن تصویر عمودی

flipped = cv2.flip(img, 0)

13. تبدیل تصویر رنگی به خاکستری

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

14. اعمال فیلتر Gaussian Blur

blur = cv2.GaussianBlur(img, (5, 5), 0)

15. اعمال فیلتر Median Blur

median = cv2.medianBlur(img, 5)

16. تشخیص لبه‌ها با Canny

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

17. تغییر فضای رنگ به HSV

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

18. رسم یک خط روی تصویر

cv2.line(img, (0,0), (100,100), (255,0,0), 3)

19. رسم یک دایره روی تصویر

cv2.circle(img, (150,150), 50, (0,255,0), -1)

20. نوشتن متن روی تصویر

cv2.putText(img, "Hello", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2)
بخش ۲ – پردازش پیشرفته تصویر (21–50)

21. تبدیل تصویر به بلور با فیلتر Gaussian با کرنل بزرگتر

blur = cv2.GaussianBlur(img, (15, 15), 0)

22. تبدیل تصویر به بلور با فیلتر Bilateral

bilateral = cv2.bilateralFilter(img, 9, 75, 75)

23. تبدیل تصویر به تصویر باینری با Thresholding

ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

24. استفاده از Adaptive Thresholding

adaptive = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)

25. یافتن کانتورهای تصویر

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

26. رسم کانتورها روی تصویر

cv2.drawContours(img, contours, -1, (0,255,0), 3)

27. اعمال تبدیل مورفولوژیک (Erosion)

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
eroded = cv2.erode(thresh, kernel, iterations=1)

28. اعمال تبدیل مورفولوژیک (Dilation)

dilated = cv2.dilate(thresh, kernel, iterations=1)

29. باز و بسته کردن (Opening & Closing)

opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)

30. اعمال تبدیل Sobel برای تشخیص لبه‌ها

sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=5)

31. تشخیص لبه با Laplacian

laplacian = cv2.Laplacian(gray, cv2.CV_64F)

32. ترکیب دو تصویر با Weighted Sum

added = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)

33. ماسک کردن تصویر با Threshold

mask = cv2.inRange(hsv, (0, 50, 50), (10, 255, 255))
res = cv2.bitwise_and(img, img, mask=mask)

34. تبدیل تصویر به تصویر Negative

negative = 255 - img

35. پیدا کردن مرکز کانتور

M = cv2.moments(contours[0])
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])

36. رسم مستطیل دور کانتور

x, y, w, h = cv2.boundingRect(contours[0])
cv2.rectangle(img, (x,y), (x+w, y+h), (0,0,255), 2)

37. رسم دایره دور کانتور حداقلی

(x, y), radius = cv2.minEnclosingCircle(contours[0])
cv2.circle(img, (int(x), int(y)), int(radius), (255,0,0), 2)

38. approxPolyDP برای ساده‌سازی کانتور

epsilon = 0.01 * cv2.arcLength(contours[0], True)
approx = cv2.approxPolyDP(contours[0], epsilon, True)

39. شمارش تعداد اشکال در تصویر

print(len(contours))

40. تبدیل تصویر به تصویر 1 کاناله سیاه و سفید (Binary)

ret, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

41. یافتن خطوط با Hough Transform

lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

42. یافتن دایره‌ها با Hough Circle

circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)

43. Warp تصویر (Perspective Transform)

pts1 = np.float32([[0,0],[w,0],[0,h],[w,h]])
pts2 = np.float32([[0,0],[w,0],[50,h],[w-50,h]])
matrix = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, matrix, (w,h))

44. Affine Transform برای چرخش و انتقال تصویر

pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])
matrix = cv2.getAffineTransform(pts1, pts2)
dst = cv2.warpAffine(img, matrix, (cols, rows))

45. Histogram تصویر

hist = cv2.calcHist([gray], [0], None, [256], [0,256])

46. برابر سازی Histogram (Histogram Equalization)

equalized = cv2.equalizeHist(gray)

47. تبدیل تصویر به تصویر HSV و جدا کردن کانال‌ها

h,s,v = cv2.split(hsv)

48. ادغام کانال‌ها

merged = cv2.merge([h,s,v])

49. رسم مستطیل و متن روی تصویر با حلقه

for i, cnt in enumerate(contours):
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
cv2.putText(img, str(i), (x,y-5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255),1)

50. چسباندن (Stack) دو تصویر کنار هم

stacked = np.hstack((img1, img2))
cv2.imshow("Stacked", stacked)


---
باشه، ادامه می‌دهیم به سوالات حرفه‌ای و پروژه‌ای OpenCV (51–100)
بخش ۳ – پروژه‌ها و کاربردهای پیشرفته (سوال 51–100)
51. ردیابی حرکت با Background Subtraction
fgbg = cv2.createBackgroundSubtractorMOG2() fgmask = fgbg.apply(frame)
52. محاسبه Optical Flow برای ردیابی حرکت
flow = cv2.calcOpticalFlowFarneback(prev_gray, gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
53. تشخیص چهره با Haar Cascade
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') faces = face_cascade.detectMultiScale(gray, 1.3, 5)
54. رسم مستطیل دور چهره‌ها
for (x,y,w,h) in faces: cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0), 2)
55. تشخیص چشم در چهره
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') for (x,y,w,h) in faces: roi_gray = gray[y:y+h, x:x+w] eyes = eye_cascade.detectMultiScale(roi_gray)
56. ردیابی شی با Color Detection
mask = cv2.inRange(hsv, lower_color, upper_color) res = cv2.bitwise_and(frame, frame, mask=mask)
57. محاسبه Moments و مرکز شیء رنگی
M = cv2.moments(mask) cx = int(M['m10']/M['m00']) cy = int(M['m01']/M['m00'])
58. تشخیص حرکات با Contours روی ماسک
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(frame, contours, -1, (0,255,0), 2)
59. رسم مسیر حرکت شیء روی تصویر
pts = deque(maxlen=64) pts.appendleft((cx, cy)) for i in range(1, len(pts)): cv2.line(frame, pts[i-1], pts[i], (0,0,255), 2)
60. محاسبه زاویه بین دو خط
angle = math.degrees(math.atan2(y2-y1, x2-x1))
61. تبدیل تصویر به Sketch (طرح سیاه و سفید)
inv = 255 - gray blur = cv2.GaussianBlur(inv, (21,21), 0) sketch = cv2.divide(gray, 255 - blur, scale=256)
62. Cartoon Effect روی تصویر
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.medianBlur(gray, 5) edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9) color = cv2.bilateralFilter(img, 9, 300, 300) cartoon = cv2.bitwise_and(color, color, mask=edges)
63. اعمال فیلتر Canny روی تصویر رنگی
edges = cv2.Canny(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), 100, 200)
64. تشخیص QR Code با OpenCV
detector = cv2.QRCodeDetector() data, bbox, _ = detector.detectAndDecode(img)
65. Trackbar برای تغییر Threshold در زمان اجرا
cv2.createTrackbar('Thresh','window',0,255,nothing)
66. تشخیص حرکت با Frame Differencing
diff = cv2.absdiff(frame1, frame2) gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
67. Histogram Equalization روی تصویر رنگی (YUV)
yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV) yuv[:,:,0] = cv2.equalizeHist(yuv[:,:,0]) img_eq = cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR)
68. استخراج لبه‌ها و اعمال ماسک روی تصویر اصلی
edges = cv2.Canny(gray, 100, 200) masked = cv2.bitwise_and(img, img, mask=edges)
69. Template Matching برای پیدا کردن شیء در تصویر
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) top_left = max_loc
70. Perspective Transform برای اسکن سند
pts1 = np.float32([[x1,y1],[x2,y2],[x3,y3],[x4,y4]]) pts2 = np.float32([[0,0],[w,0],[0,h],[w,h]]) matrix = cv2.getPerspectiveTransform(pts1, pts2) scanned = cv2.warpPerspective(img, matrix, (w,h))
71. اعمال Gaussian Pyramid برای Downsampling تصویر
lower_reso = cv2.pyrDown(img)
72. اعمال Laplacian Pyramid برای تصویر
laplacian = cv2.pyrUp(lower_reso)
73. Blend دو تصویر با Pyramid Blending
blended = cv2.addWeighted(img1, 0.5, img2, 0.5, 0)
74. Optical Character Recognition (OCR) با pytesseract
import pytesseract text = pytesseract.image_to_string(img)
75. شمارش اشیا با Connected Components
num_labels, labels = cv2.connectedComponents(thresh)
76. تغییر رنگ شیء انتخاب شده با ماسک
img[mask==255] = [0,255,0]
77. رسم Bounding Box روی بیش از یک شیء
for cnt in contours: x,y,w,h = cv2.boundingRect(cnt) cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
78. محاسبه Area کانتور و فیلتر کوچک‌ترین‌ها
areas = [cv2.contourArea(c) for c in contours] big_contours = [c for c in contours if cv2.contourArea(c)>100]
79. استخراج ROI و ذخیره در فایل

roi = img[y:y+h, x:x+w]
cv2.imwrite('roi.jpg', roi)

80. محاسبه هیستوگرام کانال‌های رنگی

color = ('b','g','r')
for i,col in enumerate(color):
hist = cv2.calcHist([img],[i],None,[256],[0,256])

81. تشخیص اشیا با Background Subtractor KNN

fgbg = cv2.createBackgroundSubtractorKNN()
fgmask = fgbg.apply(frame)

82. اعمال Morphology بعد از Subtraction برای تمیز کردن

kernel = np.ones((5,5),np.uint8)
fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)

83. استخراج لبه‌ها و یافتن گوشه‌ها با Harris

dst = cv2.cornerHarris(gray,2,3,0.04)
dst = cv2.dilate(dst,None)
img[dst>0.01*dst.max()] = [0,0,255]

84. Detect SIFT keypoints و Descriptors

sift = cv2.SIFT_create()
kp, des = sift.detectAndCompute(gray,None)
img=cv2.drawKeypoints(img,kp,None)

85. Detect ORB keypoints و Descriptors

orb = cv2.ORB_create()
kp, des = orb.detectAndCompute(gray,None)
img=cv2.drawKeypoints(img,kp,None)

86. Feature Matching با BFMatcher

bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)
matches = sorted(matches, key = lambda x:x.distance)

87. Stitching دو تصویر کنار هم

stitcher = cv2.Stitcher_create()
status, pano = stitcher.stitch([img1,img2])

88. Face Recognition با LBPHFaceRecognizer

recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.train(faces, np.array(labels))

89. CamShift Tracking

ret, track_window = cv2.CamShift(prob_mask, track_window, term_crit)

90. MeanShift Tracking

ret, track_window = cv2.meanShift(prob_mask, track_window, term_crit)
ادامه‌ی سوالات حرفه‌ای و پروژه‌ای OpenCV (91–100):


---

91. Detect Contours با cv2.RETR_EXTERNAL

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)

92. Approximate Contours با cv2.approxPolyDP

epsilon = 0.02 * cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, epsilon, True)
cv2.drawContours(img, [approx], 0, (0,0,255), 2)

93. Fit Ellipse روی کانتورهای بیضوی شکل

if len(cnt) >= 5:
ellipse = cv2.fitEllipse(cnt)
cv2.ellipse(img, ellipse, (255,0,0), 2)

94. Fit Line روی نقاط کانتور

[vx, vy, x, y] = cv2.fitLine(cnt, cv2.DIST_L2,0,0.01,0.01)

95. محاسبه Bounding Circle کانتور

(x, y), radius = cv2.minEnclosingCircle(cnt)
cv2.circle(img, (int(x),int(y)), int(radius), (0,255,0),2)

96. Threshold پویا با cv2.adaptiveThreshold

thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)

97. استفاده از cv2.add و cv2.subtract برای ترکیب تصاویر

added = cv2.add(img1, img2)
subtracted = cv2.subtract(img1, img2)

98. استفاده از cv2.bitwise_and, or, xor روی تصاویر

bitwise_and = cv2.bitwise_and(img1, img2)
bitwise_or = cv2.bitwise_or(img1, img2)
bitwise_xor = cv2.bitwise_xor(img1, img2)

99. ساخت ماسک از چندضلعی

mask = np.zeros_like(gray)
pts = np.array([[50,50],[200,50],[200,200],[50,200]], np.int32)
cv2.fillPoly(mask, [pts], 255)
masked_img = cv2.bitwise_and(img, img, mask=mask)

100. ذخیره و بارگذاری ویدیو با VideoWriter و VideoCapture

cap = cv2.VideoCapture('input.mp4')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
out.write(frame)
cap.release()
out.release()
cv2.destroyAllWindows()
فصل هوش مصنوعی و یادگیری عمیق (AI / Deep Learning) است.


فصل AI / Deep Learning – بخش ۱: مقدماتی (سوال 1–20)

1. نصب TensorFlow

pip install tensorflow

2. چک کردن نسخه TensorFlow

import tensorflow as tf
print(tf.version)

3. ساخت یک Tensorr ساده

import tensorflow as tf
tensor = tf.constant([[1,2],[3,4]])
print(tensor)

4. جمع دو Tensorr

a = tf.constant([1,2])
b = tf.constant([3,4])
print(tf.add(a,b))

5. تعریف یک متغیر TensorFlow

v = tf.Variable([1.0,2.0])
v.assign([3.0,4.0])

6. تبدیل NumPy به TensorFlow

import numpy as np
arr = np.array([1,2,3])
tensor = tf.convert_to_tensor(arr)

7. ساخت یک مدل Sequential ساده

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([Dense(10, input_shape=(5,), activation='relu')])

8. اضافه کردن لایه Dense به مدل

model.add(Dense(1, activation='sigmoid'))

9. کامپایل مدل با optimizer و loss

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

10. آماده کردن داده‌های آموزشی

import numpy as np
X = np.random.rand(100,5)
y = np.random.randint(0,2,100)

11. آموزش مدل با fit

model.fit(X, y, epochs=10, batch_size=5)

12. ارزیابی مدل با evaluate

loss, acc = model.evaluate(X, y)
print(loss, acc)

13. پیش‌بینی با مدل

preds = model.predict(X[:5])
print(preds)

14. ذخیره مدل کامل

model.save('my_model.h5')

15. بارگذاری مدل

from tensorflow.keras.models import load_model
model = load_model('my_model.h5')

16. ساخت Callback برای توقف زودهنگام

from tensorflow.keras.callbacks import EarlyStopping
es = EarlyStopping(monitor='loss', patience=3)

17. تقسیم داده به train و test با sklearn

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

18. استانداردسازی داده‌ها

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

19. تعریف یک شبکه با چند لایه Dense

model = Sequential([
Dense(64, activation='relu', input_shape=(5,)),
Dense(32, activation='relu'),
Dense(1, activation='sigmoid')
])

20. استفاده از Dropout برای جلوگیری از Overfitting

from tensorflow.keras.layers import Dropout
model = Sequential([
Dense(64, activation='relu', input_shape=(5,)),
Dropout(0.5),
Dense(1, activation='sigmoid')
])


---
فصل AI / Deep Learning – بخش ۲: پیشرفته‌تر (سوال 21–40)
21. ساخت یک شبکه کانولوشنی ساده (CNN) برای تصاویر
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ])
22. کامپایل مدل CNN با categorical_crossentropy
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
23. ساخت یک شبکه بازگشتی ساده (RNN) با LSTM
from tensorflow.keras.layers import LSTM model = Sequential([ LSTM(50, input_shape=(10,1)), Dense(1, activation='sigmoid') ])
24. استفاده از Embedding برای متن
from tensorflow.keras.layers import Embedding model = Sequential([ Embedding(input_dim=1000, output_dim=64, input_length=10), LSTM(32), Dense(1, activation='sigmoid') ])
25. بارگذاری دیتاست MNIST
from tensorflow.keras.datasets import mnist (X_train, y_train), (X_test, y_test) = mnist.load_data()
26. نرمال‌سازی تصاویر MNIST
X_train = X_train / 255.0 X_test = X_test / 255.0
27. One-hot encoding برای برچسب‌ها
from tensorflow.keras.utils import to_categorical y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10)
28. Data augmentation با ImageDataGenerator
from tensorflow.keras.preprocessing.image import ImageDataGenerator datagen = ImageDataGenerator(rotation_range=10, width_shift_range=0.1, height_shift_range=0.1) datagen.fit(X_train.reshape(-1,28,28,1))
29. اضافه کردن BatchNormalization به مدل
from tensorflow.keras.layers import BatchNormalization model = Sequential([ Dense(64, activation='relu', input_shape=(20,)), BatchNormalization(), Dense(1, activation='sigmoid') ])
30. استفاده از optimizer پیشرفته Adamax
from tensorflow.keras.optimizers import Adamax model.compile(optimizer=Adamax(), loss='binary_crossentropy', metrics=['accuracy'])
31. ذخیره مدل به فرمت SavedModel
model.save('saved_model')
32. بارگذاری مدل SavedModel
model = tf.keras.models.load_model('saved_model')
33. استفاده از TensorBoard برای مانیتورینگ
from tensorflow.keras.callbacks import TensorBoard tb = TensorBoard(log_dir='./logs')
34. آموزش مدل با validation_split
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
35. EarlyStopping و ReduceLROnPlateau با هم
from tensorflow.keras.callbacks import ReduceLROnPlateau rlr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=2)
36. مدل Functional API برای چند ورودی
from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Dense, concatenate input1 = Input(shape=(10,)) input2 = Input(shape=(5,)) x = Dense(8, activation='relu')(input1) y = Dense(4, activation='relu')(input2) combined = concatenate([x,y]) output = Dense(1, activation='sigmoid')(combined) model = Model(inputs=[input1, input2], outputs=output)
37. محاسبه confusion matrix با sklearn
from sklearn.metrics import confusion_matrix y_pred = model.predict(X_test).round() cm = confusion_matrix(y_test, y_pred) print(cm)
38. رسم نمودار Accuracy و Loss
import matplotlib.pyplot as plt history = model.fit(X_train, y_train, epochs=10, validation_split=0.2) plt.plot(history.history['accuracy']) plt.plot(history.history['val_accuracy']) plt.show()
39. استفاده از callbacks سفارشی
from tensorflow.keras.callbacks import Callback class MyCallback(Callback): def on_epoch_end(self, epoch, logs=None): print(f"Epoch {epoch} done!")
40. پیش‌بینی چند کلاس با softmax و argmax
preds = model.predict(X_test) import numpy as np labels = np.argmax(preds, axis=1)
فصل AI / Deep Learning – بخش ۳: پروژه‌ها و کاربردهای واقعی (سوال 41–60)
41. تشخیص ارقام دست‌نویس MNIST
# شبکه CNN ساده from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(X_train, y_train, epochs=5)
42. تشخیص تصاویر سگ و گربه (Cat vs Dog)
from tensorflow.keras.preprocessing.image import ImageDataGenerator train_gen = ImageDataGenerator(rescale=1./255).flow_from_directory('train/', target_size=(64,64)) model.fit(train_gen, epochs=10)
43. تحلیل احساسات متن با LSTM
from tensorflow.keras.layers import Embedding, LSTM model = Sequential([ Embedding(input_dim=10000, output_dim=64, input_length=100), LSTM(64), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
44. ترجمه متن با Seq2Seq
# تعریف مدل Encoder-Decoder ساده from tensorflow.keras.layers import Input, LSTM, Dense encoder_inputs = Input(shape=(None, num_encoder_tokens)) encoder = LSTM(256, return_state=True) encoder_outputs, state_h, state_c = encoder(encoder_inputs) encoder_states = [state_h, state_c] decoder_inputs = Input(shape=(None, num_decoder_tokens)) decoder_lstm = LSTM(256, return_sequences=True, return_state=True) decoder_outputs, _, _ = decoder_lstm(decoder_inputs, initial_state=encoder_states) decoder_dense = Dense(num_decoder_tokens, activation='softmax') decoder_outputs = decoder_dense(decoder_outputs)
45. تشخیص شی در تصویر با Object Detection (YOLO)
# استفاده از مدل از پیش آموزش دیده YOLOv5 !pip install ultralytics from ultralytics import YOLO model = YOLO('yolov5s.pt') results = model('image.jpg') results.show()
46. پیش‌بینی سری‌های زمانی با LSTM
from tensorflow.keras.layers import LSTM model = Sequential([ LSTM(50, input_shape=(10,1)), Dense(1) ]) model.compile(optimizer='adam', loss='mse')
47. تولید متن با RNN
from tensorflow.keras.layers import SimpleRNN model = Sequential([ SimpleRNN(128, input_shape=(100, vocab_size)), Dense(vocab_size, activation='softmax') ])
48. تشخیص ناهنجاری (Anomaly Detection) با Autoencoder
from tensorflow.keras.layers import Input, Dense input_dim = X_train.shape[1] input_layer = Input(shape=(input_dim,)) encoded = Dense(32, activation='relu')(input_layer) decoded = Dense(input_dim, activation='sigmoid')(encoded) autoencoder = Model(inputs=input_layer, outputs=decoded) autoencoder.compile(optimizer='adam', loss='mse')
49. کاهش ابعاد با PCA قبل از شبکه عصبی
from sklearn.decomposition import PCA pca = PCA(n_components=50) X_reduced = pca.fit_transform(X_train)
50. استفاده از Dropout برای جلوگیری از overfitting
from tensorflow.keras.layers import Dropout model = Sequential([ Dense(128, activation='relu', input_shape=(100,)), Dropout(0.5), Dense(10, activation='softmax') ])
51. استفاده از BatchNormalization در CNN
from tensorflow.keras.layers import BatchNormalization model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), BatchNormalization(), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ])
52. EarlyStopping برای جلوگیری از overfitting
from tensorflow.keras.callbacks import EarlyStopping es = EarlyStopping(monitor='val_loss', patience=3) model.fit(X_train, y_train, epochs=20, validation_split=0.2, callbacks=[es])
53. استفاده از ReduceLROnPlateau
from tensorflow.keras.callbacks import ReduceLROnPlateau rlr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=2)
54. ذخیره بهترین مدل با ModelCheckpoint
from tensorflow.keras.callbacks import ModelCheckpoint checkpoint = ModelCheckpoint('best_model.h5', save_best_only=True)
55. ساخت شبکه GAN ساده
# Generator و Discriminator ساده from tensorflow.keras.layers import Dense, LeakyReLU from tensorflow.keras.models import Sequential generator = Sequential([Dense(128, activation='relu', input_dim=100), Dense(784, activation='sigmoid')]) discriminator = Sequential([Dense(128, activation=LeakyReLU(0.2), input_dim=784), Dense(1, activation='sigmoid')])
56. استفاده از pre-trained VGG16 برای feature extraction
from tensorflow.keras.applications import VGG16 base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224,224,3))
57. fine-tuning مدل از پیش آموزش دیده
for layer in base_model.layers[:-4]: layer.trainable = False
58. استفاده از tf.data برای pipeline داده‌ها
import tensorflow as tf dataset = tf.data.Dataset.from_tensor_slices((X_train, y_train)).batch(32).shuffle(1000)
59. پیش‌بینی تصاویر جدید با مدل CNN
import numpy as np img = np.expand_dims(X_test[0], axis=0) pred = model.predict(img)
60. اندازه‌گیری دقت مدل با sklearn
from sklearn.metrics import accuracy_score y_pred = model.predict(X_test).argmax(axis=1) y_true = y_test.argmax(axis=1) print(accuracy_score(y_true, y_pred))
فصل AI / Deep Learning – بخش ۴: پروژه‌های واقعی پیشرفته (سوال 61–80)

61. تشخیص چهره با OpenCV و DNN

import cv2
net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'weights.caffemodel')
image = cv2.imread('face.jpg')
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
net.setInput(blob)
detections = net.forward()

62. تشخیص اشیا با Mask R-CNN

# استفاده از مدل pre-trained Mask R-CNN
from mrcnn import model as modellib, utils
model = modellib.MaskRCNN(mode='inference', model_dir='./', config=config)
results = model.detect([image], verbose=1)

63. ایجاد Chatbot ساده با seq2seq

# استفاده از LSTM encoder-decoder
from tensorflow.keras.models import Model
from tensorflow.keras.layers import LSTM, Input, Dense

64. استفاده از Word2Vec برای embedding متن

from gensim.models import Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
vector = model.wv['python']

65. استفاده از BERT برای NLP

from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = TFBertModel.from_pretrained('bert-base-uncased')
inputs = tokenizer("Hello AI!", return_tensors="tf")
outputs = model(inputs)

66. استفاده از Attention در شبکه عصبی

from tensorflow.keras.layers import Attention
attention = Attention()([query, value])

67. تشخیص خطا در متن با Transformer

# مدل تصحیح گرامر با Transformer
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("t5-small")
model = AutoModelForSeq2SeqLM.from_pretrained("t5-small")

68. سیستم توصیه‌گر با Collaborative Filtering

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
similarity = cosine_similarity(user_item_matrix)

69. افزایش داده‌ها (Data Augmentation) در تصویر

from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(rotation_range=20, horizontal_flip=True)

70. استفاده از Regularization L2 برای جلوگیری از overfitting

from tensorflow.keras.regularizers import l2
Dense(64, activation='relu', kernel_regularizer=l2(0.01))

71. آموزش GAN با تصاویر دست‌ساز

# آموزش Generator و Discriminator

72. ایجاد Autoencoder برای کاهش نویز تصویر

# مدل Encoder-Decoder ساده برای denoising

73. استفاده از TensorBoard برای مانیتورینگ

from tensorflow.keras.callbacks import TensorBoard
tb = TensorBoard(log_dir='./logs')
model.fit(X_train, y_train, epochs=5, callbacks=[tb])

74. پیش‌بینی زمان واقعی با مدل CNN

# استفاده از OpenCV برای دریافت فریم و مدل CNN برای پیش‌بینی

75. تشخیص احساسات با شبکه عصبی CNN-LSTM

# ترکیب ویژگی‌های تصویر و متن

76. استفاده از Learning Rate Scheduler

from tensorflow.keras.callbacks import LearningRateScheduler
def scheduler(epoch, lr): return lr * 0.9
lr_scheduler = LearningRateScheduler(scheduler)

77. آموزش مدل چند وظیفه‌ای (Multi-task Learning)

# مدل با خروجی‌های متعدد برای چند وظیفه

78. Distillation مدل برای سبک‌سازی شبکه عصبی

# آموزش مدل کوچک با تقلید از مدل بزرگ

79. استفاده از Mixed Precision Training برای سرعت بیشتر

from tensorflow.keras.mixed_precision import experimental as mixed_precision
policy = mixed_precision.Policy('mixed_float16')
mixed_precision.set_policy(policy)

80. ذخیره و بارگذاری مدل TensorFlow با SavedModel

model.save('saved_model/my_model')
loaded_model = tf.keras.models.load_model('saved_model/my_model')


---