Programmer – Telegram
Programmer
388 subscribers
45 photos
37 videos
29 files
72 links
این کانال در حوزه های وب ، رباتیک، هوش مصنوعی، ربات تلگرام و... فعالیت دارد، به طور کلی سعی دارم جزوات، کتاب ها و مقالاتی که مطالعه کردم رو با شما به اشتراک بذارم

گروه مربوط به هوش مصنوعی 👇

https://news.1rj.ru/str/Artificial_Intelligence21
Download Telegram
Programmer
زبان جدید یاد بگیر : قسمت سوم : فرمت دهی در پایتون و جاوا 🐍 %d دسیمال (ده دهی) %f => floot %s =>String در اینجا ما به دسیمال می‌پردازیم : %0+,ld =>فرمت نوشتن فواصل خالی + علامت ، جدا کننده L طول d برای دسیمال هستش کد بالا داخل پایتون     int_number…
زبان جدید یاد بگیر :

قسمت چهارم : فرمت دهی در پایتون و جاوا 🐍 ( floot)


جاوا (Java):

فرمت‌دهی با printf
public class Main {
    public static void main(String[] args) {
        float f = 1234.5678f;
        double d = -98765.4321;

        System.out.printf("ساده: %f\n", f);
        System.out.printf("دو رقم اعشار: %.2f\n", f);
        System.out.printf("با علامت مثبت: %+f\n", f);
        System.out.printf("عرض 12: %12.2f\n", f);
        System.out.printf("با صفر و عرض 12: %012.2f\n", f);
        System.out.printf("جداکننده هزارگان: %,.2f\n", d);
        System.out.printf("ترکیب همه: %+0,12.2f\n", d);
    }
}

پایتون (Python):

فرمت‌دهی با format یا f-string

f = 1234.5678
d = -98765.4321

print("ساده:", f)
print("دو رقم اعشار: {:.2f}".format(f))
print("با علامت مثبت: {:+.2f}".format(f))
print("عرض 12: {:12.2f}".format(f))
print("با صفر و عرض 12: {:012.2f}".format(f))
print("جداکننده هزارگان: {:,.2f}".format(d))
print("ترکیب همه: {:+012,.2f}".format(d))

نتیجه در هر دو زبان:

ساده: 1234.5678 
دو رقم اعشار: 1234.57 
با علامت مثبت: +1234.57 
عرض 12:     1234.57 
با صفر و عرض 12: 00001234.57 
جداکننده هزارگان: -98,765.43 
ترکیب همه: -098,765.43

.2f → نمایش عدد با دو رقم اعشار

+ → نمایش علامت مثبت برای اعداد مثبت

12 → حداقل عرض ۱۲ کاراکتر (راست‌چین)

0 → پر کردن با صفر در صورت نیاز

, → اضافه کردن جداکننده هزارگان

#programmer #java #Python #جاوا #پایتون
2😇21👍1👌1
This media is not supported in your browser
VIEW IN TELEGRAM
فرق بین طراحی سایت در سال 2000 با سال 2020
البته الان باید AI هم بهش اضافه بشه 🤝✌️🤣
🤣71🗿1
به دوستان‌ جدید خوش آمد میگم

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

https://news.1rj.ru/str/ProfessionalRobotics

و این گروه هوش مصنوعی

https://news.1rj.ru/str/Artificial_Intelligence21

که با هم پروژه انجام میدیم 🤝
5💘3🥰1🤩1
Programmer
آموزش OpenCV - قسمت دوم: فیلترها (تغییر رنگ و تغییر سایز) 🔹 1. تبدیل تصویر به سیاه و سفید (Gray Scale) برای تبدیل تصویر به حالت سیاه و سفید، از تابع cv2.cvtColor استفاده می‌کنیم. کد نمونه: import cv2 img = cv2.imread('path_to_image.jpg') # بارگذاری تصویر…
آموزش opencv - قسمت سوم : (فیلتر های Blur و تشخیص لبه 😶‍🌫️⛰️)

😶‍🌫️ فیلترهای محوشدگی (Blurring Filters)

محوشدگی یکی از تکنیک‌های پایه در پردازش تصویر است که برای کاهش نویز و صاف کردن تصویر استفاده می‌شود. در ادامه چند نوع فیلتر بلور معروف را معرفی می‌کنیم:

1. Averaging Blur (میانگین‌گیری)

به‌سادگی میانگین تمام پیکسل‌های اطراف یک پیکسل را حساب می‌کند و به عنوان مقدار جدید همان پیکسل استفاده می‌کند.
پارامتر هایی که می‌گیرد
Src
تصویر ورودی
Ksize
اندازه ی فیلتر

کد:
cv2.blur(img, (5, 5))


2. Gaussian Blur (بلور گوسین)

محوشدگی نرم‌تری ایجاد می‌کند. در این روش پیکسل‌های اطراف با توجه به فاصله‌شان از مرکز وزن‌دار می‌شوند (بر اساس تابع گوسین).

پارامتر هایی که میگیره :
Src
تصویر ورودی
Ksize
اندازه ی کرنل، یک تاپل میگیرد که هر عدد فرد و مثبت است
Sigmax
انحراف معیار در جهت x
اگر 0 بذاری خود برنامه مقدار مناسب رو می‌گذارد

کد:
cv2.GaussianBlur(img, (5, 5), 0)


3. Median Blur (بلور میانه‌ای)

برای حذف نویزهای خاص بسیار مؤثر است.

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

پارامتر هایی که می‌گیرد
Src
نام عکس
Ksize
فقط یک عدد صحیح فرد

کد:
cv2.medianBlur(img, 5)


4. Bilateral Filter (فیلتر دوطرفه)

برخلاف سایر فیلترها، لبه‌ها را حفظ می‌کند در حالی‌که قسمت‌های دیگر را محو می‌کند.

مناسب برای صاف‌کردن تصویر بدون از بین بردن جزئیات.

Src
تصویر ورودی
D
قطر ناحیه ی فیلتر
Sigmacolor
میزان حساسیت به تفاوت رنگ
Sigmascap
میزان حساسیت به فاصله

کد:
cv2.bilateralFilter(img, 9, 75, 75)

⛰️ تشخیص لبه‌ها (Edge Detection)

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

1. Canny Edge Detection

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

Thresholde2
آستانه ی بالا
Aperturesize
اندازه ی کرنل فیلتر
L2gradient
اگر True باشه از فاصله ی اقلیدسی برای گرادیان استفاده می شود

کد:
cv2.Canny(img, 100, 200)

2. Sobel Filter

برای تشخیص لبه‌ها در جهت افقی یا عمودی.

پارامتر آخر مشخص می‌کند که در جهت x یا y کار کند.
Src
تصویر میگیره
Ddepth
عمق تصویر
DX
مشتق در راستای x
Dy
مشتق در راستای y
Ksize
اندازه ی کرنل 1، 3،5، 7


کد:
cv2.Sobel(img, cv2.CV_64F, 1, 0)  # لبه‌های افقی


3. Laplacian Filter

از مشتق دوم استفاده می‌کند، بنابراین نسبت به Sobel شدیدتر عمل می‌کند.
پارامتر هایی که می‌گیرد :
Src
تصویر ورودی
Ddepth
عمق تصویر خروجی
Ksize
اندازه ی کرنل عدد صحیح فرد
Scale
ضریب مقیاس
Delta
مقدار افزوده شده به نتیجه
Bordertype
نوع مرز در لبه

کد:
cv2.Laplacian(img, cv2.CV_64F)

کد نمونه کامل (ترکیب فیلتر بلور و تشخیص لبه)

import cv2

# خواندن تصویر

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

# تبدیل به خاکستری

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

# اعمال Gaussian Blur

blurred = cv2.GaussianBlur(gray, (5, 5), 0)


# تشخیص لبه با Canny

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

نتیجه
cv2.imshow("Original", img)
cv2.imshow("Blurred", blurred)
cv2.imshow("Edges", edges)
cv2.waitKey(0)
cv2.destroyAllWindows()


#opencv #programmer #Python #پایتون
72🔥1🤩1🦄1
Programmer
آموزش opencv - قسمت سوم : (فیلتر های Blur و تشخیص لبه 😶‍🌫️⛰️) 😶‍🌫️ فیلترهای محوشدگی (Blurring Filters) محوشدگی یکی از تکنیک‌های پایه در پردازش تصویر است که برای کاهش نویز و صاف کردن تصویر استفاده می‌شود. در ادامه چند نوع فیلتر بلور معروف را معرفی می‌کنیم:…
آموزش OpenCV - پایان بخش اول: عملیات مورفولوژیک روی تصاویر سیاه‌وسفید

در پردازش تصویر، عملیات مورفولوژیک برای بهبود ظاهر تصویر و حذف نویز به‌کار می‌ره. این تکنیک‌ها روی تصاویر باینری (سیاه‌وسفید) انجام می‌شن و باعث تغییر شکل نواحی سفید یا سیاه تصویر می‌شن.

🔸 1. فرسایش (Erosion):
قسمت‌های سفید کوچیک تصویر حذف می‌شن. برای حذف نویزهای ریز کاربرد داره.
📌 کد نمونه:
cv2.erode(mask, kernel, iterations=1)

🔸 2. گسترش (Dilation):
نواحی سفید بزرگ‌تر می‌شن؛ مثل پر کردن سوراخ‌ها یا اتصال نقاط جدا.
📌 کد نمونه:
cv2.dilate(mask, kernel, iterations=1)

🔸 3. باز کردن (Opening):
ترکیب فرسایش + گسترش → برای حذف نویزهای کوچیک.
📌 کد نمونه:
cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

🔸 4. بستن (Closing):
ترکیب گسترش + فرسایش → برای پر کردن سوراخ‌های کوچک و وصل کردن قسمت‌های جدا.
📌 کد نمونه:
cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

⚙️ نکات مهم:

قبل از اجرای عملیات، باید یک کرنل تعریف کنید. مثلاً:

kernel = np.ones((3,3), np.uint8)

با تغییر مقدار iterations می‌تونید شدت عملیات رو تنظیم کنید.

#Python #opencv #پردازش_تصویر
4👏31🤩1
Programmer
آموزش OpenCV - پایان بخش اول: عملیات مورفولوژیک روی تصاویر سیاه‌وسفید در پردازش تصویر، عملیات مورفولوژیک برای بهبود ظاهر تصویر و حذف نویز به‌کار می‌ره. این تکنیک‌ها روی تصاویر باینری (سیاه‌وسفید) انجام می‌شن و باعث تغییر شکل نواحی سفید یا سیاه تصویر می‌شن.…
تمرینات سه سطحی برای بخش اول

تمرین 1 - آسون

🔹 هدف: تمرین خواندن، نمایش و تبدیل تصویر به حالت خاکستری و Resize

🔸 شرح تمرین:

یک تصویر از کامپیوترت انتخاب کن. با استفاده از OpenCV این کارها رو انجام بده:

1. تصویر رو بخون و نشون بده

2. اون رو به خاکستری تبدیل کن و نمایش بده

3. تصویر رو به اندازه 150×150 پیکسل تغییر بده و ذخیره کن با نام resized.jpg

تمرین 2 - سطح متوسط

🔹 هدف: ترکیب فیلترهای بلور با تشخیص لبه

🔸 شرح تمرین:

یک تصویر رنگی بارگذاری کن و مراحل زیر رو انجام بده

1. اون رو به خاکستری تبدیل کن

با Gaussian Blur با سایز (5,5) روی اون فیلتر اعمال کن

3. لبه‌ها رو با Canny تشخیص بده

4. سه تصویر رو در پنجره‌های مختلف نمایش بده: اصلی، بلورشده، لبه‌ها

در آخر تفاوت‌شون رو برسی کن

تمرین 3 - پیشرفته

🔹 هدف: استفاده ترکیبی از عملیات مورفولوژیک و فیلترها

🔸 شرح تمرین:

1. یک تصویر با زمینه سفید و اشیاء سیاه (یا برعکس) انتخاب کن

2. تصویر رو به خاکستری و بعد باینری تبدیل کن (با cv2.threshold)

3. روی تصویر باینری عملیات Opening انجام بده برای حذف نویز

4. سپس عملیات Closing انجام بده برای اتصال نواحی

5. خروجی نهایی رو نمایش بده و مقایسه کن با تصویر اولیه
51👍1🔥1
✍️ مقالک

دیفیوژن چیه؟

دیفیوژن به فرایند پخش ذرات از یک ناحیه پر چگالی به ناحیه کم چگالی گفته میشه

زبان ساده : ذرات از جای شلوغ به جای خلوت حرکت میکنن 😎

مثال : در سیالات وقتی یک قطره جوهر رو در آب می ریزیم جوهر به دلیل چگالی بیشتری که داره در تمام سطح آب پخش میشه ( بدون اینکه بخوایم نیرویی برای انجام این کار بذاریم) 🥲🤝

🔌 کاربرد در فیزیک الکترونیک:

توی نیمه‌هادی‌ها، الکترون‌ها یا حفره‌ها خودشون از نواحی با تراکم بالا به نواحی با تراکم کمتر حرکت می‌کنن —
حتی بدون هیچ میدان الکتریکی یا باتری!
یعنی فقط به خاطر اختلاف تراکم ، جریان به‌وجود میاد

مثل وقتی که یه اتوبوس خالی وارد ایستگاه شلوغ میشه و همه هجوم می‌برن که وارد شن تا برسن به یه جای خلوت 😅

🤖 کاربرد در هوش مصنوعی:
مدل‌هایی مثل DALL·E 2، Stable Diffusion و Sora از همین ایده استفاده می‌کنن.

📌 چی کار می‌کنن؟

1. اول یه تصویر کاملاً نویزی (بی‌معنا) تولید می‌کنن


2. بعد مدل یاد می‌گیره که چطور دیفیوژن معکوس انجام بده


3. نتیجه؟ تبدیل نویز به یک تصویر واقعی و با معنا

💡 جمع‌بندی:

دیفیوژن یعنی حرکت طبیعی و بی‌زحمت از بی‌نظمی به نظم.
هم تو طبیعت هست، هم تو مدارهای الکترونیکی، هم تو مغز هوش مصنوعی‌های مدرن!

#هوش_مصنوعی #فیزیک #دیفیوژن #مدل_دیفیوژن #یادگیری_عمیق
43🔥2🤩2🦄1
Programmer
زبان جدید یاد بگیر : قسمت چهارم : فرمت دهی در پایتون و جاوا 🐍 ( floot) جاوا (Java): فرمت‌دهی با printf public class Main {     public static void main(String[] args) {         float f = 1234.5678f;         double d = -98765.4321;         System.out.printf("ساده:…
زبان جدید یاد بگیر  :

قسمت پنجم :

✍️ بخش اول: گرفتن ورودی از کاربر با Scanner و System.in

برای اینکه برنامه جاوا بتونه از کاربر ورودی بگیره، از کلاس Scanner استفاده می‌کنیم:

import java.util.Scanner;

بالا, اول کار اسکنر رو import کن

Scanner input = new Scanner(System.in);

در اینجا:

در System.in یعنی ورودی از کیبورد گرفته بشه.

اگر بخوای از منبع دیگه‌ای ورودی بگیری:

از فایل:
 new Scanner(new File("input.txt"))

از متن ثابت:
new Scanner(new StringReader("Hello"))

از بایت‌ها:
new Scanner(new ByteArrayInputStream(...))

اما برای بیشتر برنامه‌ها، همون System.in برای کار با کاربر کافیه.

✍️ بخش دوم: دستور switch

برای بررسی چند حالت مختلف از یک متغیر، به جای ifهای تکراری، از switch استفاده می‌کنیم.

🧑‍💻 ساختار کلی:
switch (متغیر) {
  case 1:
    // دستورات
    break;
  case 2:
    // دستورات
    break;
  default:
  
// در صورت عدم تطابق با هیچ

}

توضیحات :

خب در قسمت متغیر شما میتونید از کیبورد مقدار رو بگیرید با دستور Scanner
یا خودتون یک مقدار از قبل مشخص کنید
اینجا برسی میکنه اگر مقدار جلوی عبارت case با مقدار متغیر برابر بود دستور زیر اون case رو اجرا میکنه

اگر break نذاری چی میشه؟ 🧐

پشت سر هم، همه رو اجرا میکنه

مثال :

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in); // دریافت ورودی از کیبورد

        System.out.print("عدد روز هفته را وارد کنید (1 تا 7): ");
        int n = input.nextInt(); // خواندن عدد وارد شده

        String day;

        switch (n) {
            case 1:
                day = "شنبه";
                break;
            case 2:
                day = "یک‌شنبه";
                break;
            case 3:
                day = "دوشنبه";
                break;
            case 4:
                day = "سه‌شنبه";
                break;
            case 5:
                day = "چهارشنبه";
                break;
            case 6:
                day = "پنج‌شنبه";
                break;
            case 7:
                day = "جمعه";
                break;
            default:
                day = "عدد نامعتبر است!";
        }

        System.out.println("نتیجه: " + day);
    }
}
21💘1🦄1
قبل اين که چت بات های حرفه ای بیان، این بزرگوار کمک حال خیلی ها بود🥲
البته من هنوز ازش استفاده میکنم 😶‍🌫️
👍421💅1
This media is not supported in your browser
VIEW IN TELEGRAM
یکی از نرم افزار هایی که خیلی از استفاده کردنش لذت میبرم سالیدورکزه
ولی خب فرض کن شما طراحی کردی و میخوای مدل سه بعدی رو داخل سایت بارگذاری کنی، اینجاست که از three.js استفاده میکنی
ولی فرمت stl سالیدورکز باید تبدیل بشه

در ادامه توضیح میدم چی کار باید انجام بدین تا به فرمت مناسب تبدیلش کنید

فرمت مناسب برای استفاده در Three.js:

فرمت مناسب؟

STL
فقط مش خالی، بدون رنگ و متریال
OBJ+MTL
ساده و قدیمی، متریال جداست
FBX
سنگین و با پشتیبانی از انیمیشن
GLB / glTF
بهترین انتخاب، فشرده، با متریال و انیمیشن


بهترین انتخاب برای سایت: GLB


سرعت سایت چطور میشه؟

مدل‌های سنگین = لود کند

حتماً باید:

پلی‌گان‌ها رو کم کنی (ریتوپولوژی)

از glb استفاده کنی (سبک و سریع)

بافت و متریال رو درست تنظیم کنی


🛠️ مراحل کلی تبدیل:

1. خروجی گرفتن از SolidWorks به STL یا STEP


2. وارد کردن در Blender


3. تنظیم نور، متریال، انیمیشن (در صورت نیاز)


4. خروجی گرفتن به .glb
42🙏2👌2🦄1
Media is too big
VIEW IN TELEGRAM
خیلی وقت میشه طراحی سایت نذاشتم 🤝😎
42
خب دوستان فکر کنم شنیدین مکتب خونه 100 دوره رو رایگان گذاشته
البته یکی از دوره هایی که رایگان شده رو میتونید با کد HAMDELI رایگان دریافت کنید

روش کار به چه صورت؟

اول برید آموزش رو انتخاب کنید

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

سوم کد تخفیف رو وارد کنید

و اون رو تهیه کنید

که دوره ی هک و امنیت جادی
ماشین لرنینگ
جنگو
و...
هم داخلش هست

لیست دوره ها رو میتونید از لینک زیر ببینید

لینک...
82
Programmer
تمرینات سه سطحی برای بخش اول تمرین 1 - آسون 🔹 هدف: تمرین خواندن، نمایش و تبدیل تصویر به حالت خاکستری و Resize 🔸 شرح تمرین: یک تصویر از کامپیوترت انتخاب کن. با استفاده از OpenCV این کارها رو انجام بده: 1. تصویر رو بخون و نشون بده 2. اون رو به خاکستری…
آموزش OpenCV - بخش دوم (قسمت اول)

خواندن ویدئو از فایل:

در این قسمت قصد داریم ویدئو را فریم به فریم بخونیم و نمایش بدیم

1. ابتدا فایل ویدئو را با کمک تابع VideoCapture بارگذاری می‌کنیم.
2. سپس در یک حلقه، هر فریم را می‌خوانیم، هر فریم در متغیر frame ذخیره می‌شود

3. اگر خواندن موفق بود، فریم را نمایش می‌دهیم با دستور imshow

4. اگر کلید q فشار داده شود، حلقه متوقف می‌شود ( یعنی ویدئو متوقف می‌شود)

5. در پایان منابع آزاد شده و تمام پنجره‌ها بسته می‌شوند با کم دستور destroyAllwindows


خب دستور isOpened اینجا چی میگه ؟

در اصل اون چک میکنه ببینه وب کم یا دوربین روشنه با اگر بود وار حلقه میشه
چون اگر True بذاریم بجاش و دوربین شناسایی نشه برامون خطا بر میگردونه

کد نمونه:
import cv2

بارگذاری ویدئو از فایل
cap = cv2.VideoCapture('video.mp4')

while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
cv2.imshow('Video', frame)
خروج با زدن کلید q
if cv2.waitKey(25) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

نکته:
اگر فایل وجود نداشته باشه یا به پایان فیلم برسه، مقدار ret برابر False هستش .

همزمان ضبط فیلم و ذخیره آن:

برای ضبط همزمان فیلم از دوربین (وبکم) و ذخیره آن، باید از کدک مناسب استفاده کنیم. کدک (Codec) مخفف عبارت "Coder-Decoder" است که وظیفه فشرده‌سازی و بازگشایی داده‌های تصویری را بر عهده دارد.

در اینجا نمونه کدی برای ضبط تصویر از وبکم و ذخیره آن آورده شده است:

import cv2

cap = cv2.VideoCapture(0)

تعیین کدک مورد نظر (در اینجا XVID)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
تعریف VideoWriter برای ذخیره فایل خروجی
out = cv2.VideoWriter('output.avi', fourcc, 25.0, (640, 480))

while cap.isOpened():
ret, frame = cap.read()
if ret:
نوشتن فریم در فایل خروجی
out.write(frame)
نمایش فریم در پنجره
cv2.imshow('Webcam', frame)
خروج با زدن کلید q
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break

cap.release()
out.release()
cv2.destroyAllWindows()

نکات مهم:

- قبل از شروع ضبط، باید عرض و ارتفاع فریم‌ها مشخص شود؛ این مقادیر باید با ابعاد واقعی تصویر مطابقت داشته باشد.
- برای تعیین عرض و ارتفاع هر فریم می‌توانید از cap.get(cv2.CAP_PROP_FRAME_WIDTH) و cap.get(cv2.CAP_PROP_FRAME_HEIGHT) استفاده کنید.

- اطمینان حاصل کنید که کدک مورد استفاده روی سیستم شما نصب شده است.

توضیحات بیشتر درباره کدک‌ها:

- کدک‌ها جریانی از داده‌های تصویری هستند که وظیفه فشرده‌سازی یا بازگشایی آنها را بر عهده دارند.
- هنگام ضبط فیلم، باید نوع کدک مناسب انتخاب شود تا کیفیت مطلوب حفظ شود.
31😍1😘1
Forwarded from codepedia (Mahsa)
تفاوت Run و Run as administrator 😁


گزینه Run: اجرای برنامه با دسترسی معمولی کاربر.

گزینه Run as Administrator: اجرای برنامه با دسترسی مدیریتی (admin)، یعنی برنامه می‌تونه به فایل‌ها و تنظیمات سیستمی دسترسی داشته باشه.

🆔 @code_pedia
🤣51
Programmer
آموزش OpenCV - بخش دوم (قسمت اول) خواندن ویدئو از فایل: در این قسمت قصد داریم ویدئو را فریم به فریم بخونیم و نمایش بدیم 1. ابتدا فایل ویدئو را با کمک تابع VideoCapture بارگذاری می‌کنیم. 2. سپس در یک حلقه، هر فریم را می‌خوانیم، هر فریم در متغیر frame ذخیره…
آموزش Opencv - بخش دوم ( قسمت دوم)
۱. ایجاد یک تصویر خالی

سه حالت اصلی برای ایجاد تصویر داریم:

import cv2
import numpy as np
import random

# تصویر مشکی
img_black = np.zeros((500, 500, 3), dtype=np.uint8)

# تصویر سفید
img_white = np.ones((500, 500, 3), dtype=np.uint8) * 255

# تصویر با رنگ رندوم
img_random = np.random.randint(0, 256, (500, 500, 3), dtype=np.uint8)

۲. ترسیم خط (cv2.line)
# cv2.line(image, start_point, end_point, color, thickness)
cv2.line(img_black, (50, 50), (450, 50), (0, 255, 0), 3) 

# خط سبز از نقطه (50,50) تا (450,50)

۳. ترسیم دایره (cv2.circle)
# cv2.circle(image, center, radius, color, thickness)
cv2.circle(img_black, (250, 250), 100, (255, 0, 0), 5)
  # دایره آبی با شعاع 100
cv2.circle(img_black, (250, 250), 50, (0, 0, 255), -1)
  # دایره قرمز پر شده

🔹 وقتی thickness = -1 باشه، شکل پر کشیده میشه.

۴. ترسیم مستطیل (cv2.rectangle)
# cv2.rectangle(image, top_left, bottom_right, color, thickness)
cv2.rectangle(img_black, (100, 100), (400, 400), (0, 255, 255), 2)  # مستطیل زرد

۵. نمایش تصویر
cv2.imshow("Shapes", img_black)
cv2.waitKey(0)
cv2.destroyAllWindows()

⛔️ خروجی: یک تصویر مشکی که روش خط، دایره و مستطیل کشیده شده.

🖱 رویدادهای موس در OpenCV

تابع اصلی برای گرفتن رویداد موس:
cv2.setMouseCallback(window_name, function_name)

شکل تابع callback:
def callback(event, x, y, flags, param):
    pass


event → نوع رویداد موس (کلیک، حرکت، …)

x, y → مختصات مکان موس روی تصویر

flags → وضعیت دکمه‌ها یا کلیدهای ترکیبی (مثلاً Ctrl + کلیک)

param → پارامتر اضافه که می‌تونی خودت تعریف کنی

📌 مهم‌ترین رویدادها (event):

مقدار  توضیح
cv2.EVENT_MOUSEMOVE
حرکت موس
cv2.EVENT_LBUTTONDOWN
  کلیک چپ پایین
cv2.EVENT_LBUTTONUP
کلیک چپ بالا
cv2.EVENT_LBUTTONDBLCLK
دابل کلیک چپ
cv2.EVENT_RBUTTONDOWN
  کلیک راست پایین
cv2.EVENT_RBUTTONUP
  کلیک راست بالا
cv2.EVENT_RBUTTONDBLCLK
دابل کلیک راست
cv2.EVENT_MBUTTONDOWN
  کلیک وسط پایین
cv2.EVENT_MBUTTONUP
  کلیک وسط بالا
cv2.EVENT_MBUTTONDBLCLK
  دابل کلیک وسط
cv2.EVENT_MOUSEWHEEL
اسکرول عمودی
cv2.EVENT_MOUSEHWHEEL
  اسکرول افقی
🎨 مثال: رسم دایره رنگی با کلیک موس

import cv2
import numpy as np
import random

# ایجاد تصویر سفید
img = np.ones((500, 500, 3), dtype=np.uint8) * 255

# تابع هندل کردن رویداد موس
def draw_circle(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:  # وقتی کلیک چپ شد
        # رنگ رندوم
        color = (random.randint(0,255), random.randint(0,255), random.randint(0,255))
        # دایره بکشیم
        cv2.circle(img, (x, y), 30, color, -1)

# نمایش پنجره
cv2.namedWindow("Canvas")
cv2.setMouseCallback("Canvas", draw_circle)

while True:
    cv2.imshow("Canvas", img)
    if cv2.waitKey(1) & 0xFF == 27:  # کلید Esc برای خروج
        break

cv2.destroyAllWindows()

#programmer #Python #opencv
6🦄2🤩1🕊1
دوره ی mlops با تخفیف ۷۰ درصد هم اکنون در سایت مکتب خونه منتشر شده این تخفیف حداکثر تا اخر شب فعال هستش

https://mktb.me/ejee/

برای اطلاعات بیشتر به آیدی زیر پیام دهید 🙏🌹

@reza_Mahmooudi
🤩21👌1
This media is not supported in your browser
VIEW IN TELEGRAM
مدار چشمک زن

دیود ها قطعات کاربردی و جالبی هستن، اگر به منبع تغذیه DC وصل بشه بر اساس وصل شدنش به سر مثبت و منفی میتونه نقش کلید باز یا بسته رو ایفا کنه
ولی همین قطعه اگر به منبع تغذیه AC وصل بشه شروع به قطع و وصل کردن جریان از مدار می کنه
تو ویدئو می‌بینید که led داره خاموش و روشن میشه یا به اصطلاح چشمک میزنه 👁️

ی قطعه باید داخل این مدار باشه که نیست، حدس بزنید اون قطعه چیه 😁🤝
4👌2🦄21