الملف "C:\Users\nigam\anaconda3\lib\site-packages\sklearn\utils\validation.py"، السطر 769، في الاختيار\_array
 رفع قيمة الخطأ (

ValueError: المصفوفة ثنائية الأبعاد المتوقعة، حصلت على مصفوفة أحادية الأبعاد بدلاً من ذلك:
المصفوفة=[].
أعد تشكيل بياناتك إما باستخدام array.reshape(-1, 1) إذا كانت بياناتك تحتوي على ميزة واحدة أو array.reshape(1, -1) إذا كانت تحتوي على عينة واحدة.
# -\*- الترميز: utf-8 -\*-
"""
تم الإنشاء بتاريخ الثلاثاء 21 مارس 22:59:23 2023

@المؤلف: نيغام
"""

استيراد نظام التشغيل
استيراد numpy كـ np
استيراد Tensorflow كـ tf
من Tensorflow.keras.applications.vgg16 قم باستيراد VGG16، المعالجة المسبقة\_input
من Tensorflow.keras.preprocessing.image تحميل الاستيراد\_img, img\_to\_array
من sklearn.neighbors قم باستيراد أقرب الجيران
استيراد tkinter كـ tk
من ملف حوار استيراد tkinter

# قم بتحميل نموذج VGG16 المدرّب مسبقًا
vgg16 = VGG16(الأوزان='imagenet'، include\_top=False)

#Select مجلد يحتوي على مجموعة بيانات الصورة
الجذر = تك.تك ()
الجذر.سحب()
المجلد\_path = 'C:/Users/nigam/Desktop/Project/testing/img'

# تحديد مجلد لحفظ ميزات الصورة
Features\_folder = os.path.join(folder\_path, 'features')
إذا لم يكن os.path.exists(features\_folder):
 os.makedirs(features\_folder)

# قم بتحميل أو استخراج الميزات لكل صورة في مجموعة البيانات
الصورة\_المسارات = []
الميزات = []
لاسم الملف في os.listdir(folder\_path):
 إذا كان filename.endswith('.jpg') أو filename.endswith('.jpeg') أو filename.endswith('.png'):
 image\_path = os.path.join(folder\_path, filename)
 image\_paths.append(image\_path)
 feature\_path = os.path.join(features\_folder, os.path.splitext(filename)[0] + '.npy')
 إذا كان os.path.exists(feature\_path):
 الميزة = np.load(feature\_path)
 آخر:
 img = تحميل\_img(image\_path, target\_size=(224, 224))
 x = img\_to\_array(img)
 x = المعالجة المسبقة\_الإدخال(x)
 الميزة = np.squeeze(vgg16.predict(np.expand\_dims(x, axis=0)))
 np.save(feature\_path, feature)
 Features.append(feature.reshape(-1))

# أنشئ فهرسًا لميزات الصورة باستخدام خوارزمية أقرب الجيران
الفهرس = أقرب الجيران (n\_neighbors=5، الخوارزمية='تلقائي').fit(features)

# أنشئ نافذة منبثقة لتحديد صورة الاستعلام
الجذر = تك.تك ()
الجذر.سحب()
file\_path = filedialog.askopenfilename()

#استخراج الميزات من صورة الاستعلام باستخدام نموذج VGG16
query\_img = تحميل\_img(ملف\_مسار, الهدف\_حجم=(224, 224))
query\_x = img\_to\_array(query\_img)
query\_x = المعالجة المسبقة\_input(query\_x)
query\_features = np.squeeze(vgg16.predict(np.expand\_dims(query\_x, axis=0)))

# ابحث في الفهرس عن صور مماثلة
المسافات، المؤشرات = Index.kneighbors(np.array([query\_features]).reshape(1, -1))

# عرض أفضل 5 مباريات في نافذة منبثقة واحدة
top\_matches\_window = tk.Tk()
top\_matches\_window.title('أفضل التطابقات')
قماش = tk.Canvas(top\_matches\_window)
قماش.حزمة ()
img\_paths = []
لأني في النطاق (لين (المؤشرات [0])):
 img =load\_img(image\_paths[indices[0][i]], target\_size=(224, 224))
 img = img.resize((150, 150)) # قم بتغيير حجم الصورة لتناسب اللوحة القماشية
 img\_path = 'temp{}.png'.format(i) # أو أي اسم ملف وامتداد آخر
 img.save(img\_path)
 img\_paths.append(img\_path)
 img = tk.PhotoImage(file=img\_path)
 التسمية = tk.Label (قماش، صورة = img)
 label.image = img
 label.photo = img # احتفظ بمرجع إلى كائن PhotoImage
 label.pack(side=tk.LEFT, Padx=10, Pady=10)

بالتأكيد إغلاق\_نافذة():
 top\_matches\_window.destroy()
بالنسبة إلى img\_path في img\_paths:
 os.remove(img\_path) # احذف الملف المؤقت بعد إغلاق النافذة

إغلاق\_زر = tk.Button(top\_matches\_window, text='Close', Command=إغلاق\_window)
إغلاق\_button.pack()

top\_matches\_window.mainloop()
{"source": "ewof/sharegpt-instruct-unfiltered-deduped", "kind": "human", "evolved_from": null}