Team Ai
Datasetpublic

ysn-rfd/text-dataset-tiny-code-script-py-format

USED of tahamajs/medicine_ds_persian for .parquet file USED of Alijafarixcs2/persian-it-llama2-2k for .parquet file USED of Abirate/english_quotes for .jsonl file NEW FILES (05/12/2025) NEW FILES (12/26/2025) NEW FILES (02/15/2026)

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
3likes1.7kdownloads
untitled3.py81 linesDownload Raw Back to opencv_test
1import cv2
2import numpy as np
3from sklearn.neighbors import KNeighborsClassifier
4
5# استفاده از الگوریتم پیشرفته KNN برای background subtraction
6back_sub = cv2.createBackgroundSubtractorKNN(history=500, dist2Threshold=400, detectShadows=True)
7
8# تابع برای محاسبه مرکز (centroid)
9def get_centroid(x, y, w, h):
10    return (int(x + w / 2), int(y + h / 2))
11
12# گرفتن تصویر از دوربین
13cap = cv2.VideoCapture(0)
14
15# مدل KNN
16knn = KNeighborsClassifier(n_neighbors=3)
17
18# داده‌های آموزشی و برچسب‌ها
19object_features = []
20object_labels = []
21
22# تنظیمات برای آموزش دوره‌ای
23learning_interval = 30  # هر 30 فریم یک بار آموزش انجام شود
24frame_count = 0
25
26while True:
27    ret, frame = cap.read()
28    if not ret:
29        break
30
31    # تبدیل تصویر به خاکستری
32    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
33    
34    # دریافت ماسک اشیاء متحرک
35    fg_mask = back_sub.apply(frame)
36
37    # اعمال عملیات مورفولوژیکی برای حذف سایه‌ها و نویز
38    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))
39    fg_mask = cv2.morphologyEx(fg_mask, cv2.MORPH_OPEN, kernel, iterations=1)
40    fg_mask = cv2.dilate(fg_mask, kernel, iterations=1)
41
42    # پیدا کردن کانتورها
43    contours, _ = cv2.findContours(fg_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
44
45    for cnt in contours:
46        area = cv2.contourArea(cnt)
47        if area > 100:  # فقط اشیاء بزرگتر از این اندازه رو بررسی کن
48            x, y, w, h = cv2.boundingRect(cnt)
49            centroid = get_centroid(x, y, w, h)
50            
51            # استخراج ویژگی‌ها
52            features = [w, h, centroid[0], centroid[1]]
53            object_features.append(features)
54            object_labels.append(1)  # فرض می‌کنیم همه اشیاء متحرک به کلاس 1 تعلق دارند
55
56            # رسم باکس و مرکز
57            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
58            cv2.circle(frame, centroid, 4, (0, 0, 255), -1)
59
60    # آموزش مدل به صورت دوره‌ای
61    frame_count += 1
62    if frame_count % learning_interval == 0 and len(object_features) > 5:
63        # آموزش مدل فقط زمانی که داده‌ها کافی باشند
64        knn.fit(object_features, object_labels)
65        print("Model updated!")
66
67    # پیش‌بینی با مدل KNN برای اشیاء جدید
68    if len(object_features) > 5 and frame_count % learning_interval == 0:
69        # اطمینان حاصل می‌کنیم که مدل آموزش داده شده است قبل از پیش‌بینی
70        predicted_label = knn.predict([features])[0]
71        cv2.putText(frame, f"Predicted: {predicted_label}", (x, y - 30), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
72
73    cv2.imshow('Optimized Object Tracking', frame)
74
75    # خروج از برنامه با کلید ESC
76    if cv2.waitKey(1) & 0xFF == 27:
77        break
78
79cap.release()
80cv2.destroyAllWindows()
81