أتلقى الخطأ التالي لهذا الرمز "غير قادر على قراءة الملف 'Screw\_Detection\_CNN.mlx'. يجب أن يكون الإدخال ملف MAT أو ملف ASCII يحتوي على بيانات رقمية بنفس عدد الأعمدة في كل صف.

خطأ في الدائرة\_الكشف\_الاختبار\_CNN (السطر 4)
model =load('Screw\_Detection\_CNN.mlx');": الوظيفة [المسمار__center\_X, المسمار\_center\_Y] = الدائرة\_Detection\_Test\_CNN()

% قم بتحميل نموذج نقل التعلم
model =load('Screw\_Detection\_CNN.mlx');

% إقرأ الصورة
img = imread('Edge\_Detection\_Case.jpg');

٪ تغيير حجم الصورة إلى الحجم المطلوب للنموذج
img\_resize = imresize(img, [227 227]);

% الحصول على أبعاد الصورة
%الأبعاد الأصلية
img\_size = size(img); % الحصول على حجم الصورة
imgheight = img\_size(1); % احصل على ارتفاع الصورة
imgwidth = img\_size(2); % الحصول على عرض الصورة
% الأبعاد التي تم تغيير حجمها
img\_size\_re = size(img\_resize); % الحصول على حجم الصورة
imgheight\_re = img\_size\_re(1); % احصل على ارتفاع الصورة
imgwidth\_re = img\_size\_re(2); % الحصول على عرض الصورة

% قسّم الصورة إلى أربعة أرباع
[الصفوف، الأعمدة، ~] = size(img\_resize);
Row\_half = round(rows/2);
col\_half = round(cols/2);
Quad1 = img(1:row\_half, 1:col\_half, :);
Quad2 = img(1:row\_half, col\_half+1:end, :);
Quad3 = img(row\_half+1:end, 1:col\_half, :);
Quad4 = img(row\_half+1:end, col\_half+1:end, :);

% أضف تسميات وحدود لكل ربع
 labeled\_quad1 = InsertText(quad1, [0 0], "Quadrant 1", 'FontSize', 18);
 labeled\_quad2 = InsertText(quad2, [0 0], "Quadrant 2", 'FontSize', 18);
 labeled\_quad3 = InsertText(quad3, [0 0], "Quadrant 3", 'FontSize', 18);
 labeled\_quad4 = InsertText(quad4, [0 0], "Quadrant 4", 'FontSize', 18);
 img\_labeled = [labeled\_quad1 labeled\_quad2; المسمى\_quad3 المسمى\_quad4];
 img\_labeled = InsertShape(img\_labeled, 'Rectangle', [1 1 col\_halfrow\_half], 'LineWidth', 3);
 img\_labeled = InsertShape(img\_labeled, 'Rectangle', [col\_half+1 1 col\_halfrow\_half], 'LineWidth', 3);
 img\_labeled = InsertShape(img\_labeled, 'Rectangle', [1row\_half+1 col\_halfrows-row\_half], 'LineWidth', 3);
 img\_labeled = InsertShape(img\_labeled, 'Rectangle', [col\_half+1row\_half+1 col\_halfrows-row\_half], 'LineWidth', 3);

 % إظهار الصورة المسماة
 شكل؛
 imshow(img\_labeled);

 % اطلب من المستخدم تحديد الربع الذي يريد اكتشافه للدوائر
QuadPrompt = "الرجاء تحديد ربع الصورة للكشف عن البراغي: ";
SelectedQuad = input(quadPrompt);

% تبديل الحالة لتعيين قيمة الربع المحدد مع المقابلة
الربع٪
التبديل المحددQuad
 حالة 1
 SelectedQuad = Quad1;
 الإزاحة = [0,0] ;%لا توجد إزاحة للربع 1
 الربع = 1؛
 الحالة 2
 SelectedQuad = Quad2;
 إزاحة = [0، col\_half]؛ الإزاحة المئوية في اتجاه x للربع الثاني
 الربع = 2؛
 الحالة 3
 SelectedQuad = Quad3;
 إزاحة = [صف\_نصف,0]; الإزاحة المئوية في اتجاه y للربع 3
 الربع = 3؛
 الحالة 4
 SelectedQuad = Quad4;
 إزاحة = [صف\_نصف,col\_half]; الإزاحة المئوية في اتجاه x وy للربع الرابع
 الربع = 4؛
نهاية
ملاحظة: يكتشفون الربع الفعلي الثالث إذا قمت بإجراء imshow(quad3)
imshow(selectedQuad);

% قم بإجراء اكتشاف الكائنات على الصورة التي تم تغيير حجمها باستخدام نموذج تعلم النقل
[bboxes, labels] = Detect(model.net, img\_resize);

% احصل على إحداثيات البراغي المكتشفة
المسمار\_bboxes = bboxes(strcmp(labels,'screw'), :);

احصل على مراكز وأنصاف أقطار البراغي المكتشفة وقم بتخزينها فيها
% مصفوفات منفصلة
Screw\_props = Regionprops('table', Screw\_bboxes, {'Centroid', 'MajorAxisLength', 'MinorAxisLength'});
Screw\_centers = round(screw\_props.Centroid);

% عرض البراغي المكتشفة ومراكزها على الصورة الأصلية
شكل؛
imshow(img);
يتمسك؛
لأني = 1: الحجم (المسمار\_المراكز،1)
 % عرض صندوق المسمار
 bbox = المسمار_bboxes(i,:);
 bbox\_points = bbox2points(bbox(1:4));
 مؤامرة([bbox\_points(:,1); bbox\_points(1,1)], [bbox\_points(:,2); bbox\_points(1,2)], 'g', 'LineWidth', 2)؛
 % عرض مركز المسمار
 center = المسمار__centers(i,:);
 مؤامرة (مركز (1)، مركز (2)، 'gx'، 'MarkerSize'، 10، 'LineWidth'، 2)؛
 
 % أضف ملصقًا برقم الدائرة الموجود في منتصف الصندوق المحيط بالبرغي المكتشف
 text(center(1), center(2), num2str(i), 'HorizontalAlignment', 'center', 'Color', 'g', 'FontSize', 12, 'FontWeight', 'bold');
نهاية
خارج القبضة؛

% أضف تسمية بمركز ونصف قطر الدائرة بالدائرة
النسبة المئوية التي حددها المستخدم
ScrewPrompt = "الرجاء إدخال المسمار الذي تريد إزالته: ";
SelectedScrew = input(screwPrompt);

المسمار\_المركز = المسمار\_المراكز(selectedScrew,:);

% الكود المستخدم لتحويل الموقع المركزي بالبكسل إلى وحدة بواسطة النظام الآلي
% % تحويل مواقع المركز وأنصاف الأقطار من البكسل إلى المليمترات

% 1) تحتاج إلى تحديد حجم البكسل
% تحتاج إلى قطري لحجم المستشعر وحجم الصورة

% مواصفات كاميرا الويب Logitech c920 Pro
عرض المستشعر = 4.8 ؛ ٪(مم)
ارتفاع المستشعر = 3.6 ؛ ٪(مم)

diagSensorSize = sqrt(sensor_width^2+sensor_height^2); حجم المستشعر القطري (مم)
diagOgImageSize = sqrt(imgwidth^2+imgheight^2); % حجم الصورة الأصلية القطرية (بالبكسل)
diagResizeImageSize = sqrt(imgwidth\_re^2+imgheight\_re^2);%الحجم القطري الذي تم تغيير حجمه (بالبكسل)
% 2) تحديد حجم البكسل
Pixel\_size\_resize = diagSensorSize / diagResizeImageSize;%حجم البكسل للصورة التي تم تغيير حجمها (مم)
بكسل\_حجم\_og = diagSensorSize/diagOgImageSize; % حجم البكسل للصورة الأصلية (مم)
نسبة\_بكسل = بكسل\_حجم\_og/بكسل\_حجم\_resize; نسبة حجم البكسل الأصلي إلى الصورة التي تم تغيير حجمها
% 3) تحويل موقع المركز وقيم نصف القطر إلى المليمترات و
% يتعامل أيضًا مع الإزاحة
إذا كان الربع == 1
المسمار\_المركز\_X = المسمار\_المركز(1)\* البكسل\_الحجم\_تغيير الحجم\* النسبة\_بكسل;
المسمار\_المركز\_Y = المسمار\_المركز(2)\*بكسل\_حجم\_تغيير الحجم\* نسبة\_بكسل;
 
ربع آخر == 2
المسمار\_المركز\_X = (المسمار_المركز(1) + الإزاحة(2))\* البكسل\_الحجم\_resize\*نسبة\_بكسل;
المسمار\_المركز\_Y = المسمار_المركز(2)\*بكسل\_حجم\_تغيير الحجم\*نسبة\_بكسل;

ربع آخر == 3
 المسمار\_المركز\_X = المسمار\_المركز(1)\* البكسل\_الحجم\_تغيير الحجم\*النسبة\_بكسل;
المسمار\_المركز\_Y = (المسمار_المركز(2)+ الإزاحة(1))\*بكسل\_حجم\_resize\*نسبة\_بكسل;

ربع آخر == 4
المسمار\_المركز\_X = (المسمار_المركز(1)+ الإزاحة(1))\* البكسل\_الحجم\_resize\*النسبة\_بكسل;
المسمار\_المركز\_Y = (المسمار_المركز(2) + الإزاحة(2))\*بكسل\_حجم\_resize\*نسبة\_بكسل;

نهاية

disp("موضع المسمار"+SelectScrew + "'s" + "موقع المركز")
disp("موقع المحور السيني المركزي: "+ المسمار\_المركز\_X + "مم")
disp("موقع المحور الصادي المركزي: "+ المسمار\_المركز\_Y + "مم")
{"source": "ewof/sharegpt-instruct-unfiltered-deduped", "kind": "human", "evolved_from": null}