v1.2.0¶
v1.2.0 هو إصدار تأسيسي كبير جداً يبني معظم واجهة برمجة التصوير الكلاسيكية في OpenMV: طرق الرسم، وعمليات الثنائية / المورفولوجيا، وواصفات النقاط المفتاحية (FAST / FREAK / LBP)، وتحويلات الألوان وimage.statistics، وإدخال/إخراج ملفات BMP / PPM / JPEG، ووحدات lcd وmjpeg وgif وmlx الحرارية، وكاميرا OV7725، والعديد من عناصر التحكم في sensor. تغيّر بعض سلوك sensor الأساسي — اقرأ التغييرات الكاسرة أدناه.
أبرز النقاط¶
واجهة الرسم —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().الثنائية / المورفولوجيا —
binary()وinvert()وand/or/xor/...وerode()/dilate()/morph()وnegate()/difference().النقاط المفتاحية — واصفات FAST / FREAK / LBP مع
match_descriptor()/save_descriptor()/load_descriptor().دعم كاميرا OV7725؛ و
image.statistics؛ وإدخال/إخراج ملفات BMP/PPM/JPEG.كاسر: تغيّر سلوك
sensor.reset()وsensor.snapshot()وsensor.set_pixformat()— راجع التغييرات الكاسرة.
ميزات جديدة¶
الرسم — أُضيفت
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()مع وسائط مفتاحية (color وthickness و…).الثنائية / المورفولوجيا — أُضيفت
image.binary()وinvert()وand()/nand()/or()/nor()/xor()/xnor()وerode()/dilate()/morph()وnegate()/difference()وpixels()وcentroid()وorientation_radians()/orientation_degrees()وwidth()/height()/format().النقاط المفتاحية / الواصفات — استخراج النقاط المفتاحية FAST عبر
find_keypoints()، ودالة موحّدةmatch_descriptor()وsave_descriptor()/load_descriptor()لـ FREAK / LBP، بالإضافة إلى سلسلة Haar/LBP للوجه الجانبي.اللون / الإحصاءات —
image.statisticsودوال تحويل الألوان (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).إدخال/إخراج الملفات — تحميل وحفظ BMP / PPM (P2/P3/P5/P6) / JPEG (بما في ذلك JPEG بتدرج الرمادي وأخذ عينات اللونية الفرعية 4:2:0 / 4:2:2).
الوحدات — وحدة
lcdجديدة (درع LCD)، وmjpeg(تسجيل الفيديو)، وgifبالألوان (معGif.loop())، ووحداتmlxللكاميرا الحرارية، ولكلٍ منها برامج نصية كأمثلة.المستشعر — أُضيفت
sensor.get_id()(+ ثوابت PID لـ OV9650/OV2640/OV7725)، وsensor.set_special_effect()(ثوابت SDE_*)، وsensor.set_image_filter()(FILTER_BW / FILTER_SKIN)، وحجم الإطارHQVGA، وimage.set_pixel(x, y, …).WiFi — أُضيف برنامج تشغيل WiFi لـ ATWINC1500 وأساسيات BSP لـ OpenMV 1/2، بالإضافة إلى مثال BLE.
تغييرات وتحسينات أخرى¶
يُضغط مخزن الإطارات الآن بصيغة JPEG قبل بثّه إلى OpenMV IDE (عرض نطاق أقل)؛ ويتم ضغط JPEG في مكانه؛ ويتيح التكبير الأفقي/الرأسي في OV7725 تحجيماً اعتباطياً؛ وتحسّن كشف الوجوه بـ Haar (أسرع) ليعمل بدقة QVGA.
إصلاحات الأخطاء¶
التصوير:
أُصلح حساب الصورة التكاملية، وتلف مرشح
median()، وحساب المركز، ومرشحات بشرة RGB / الأبيض والأسود على دخل RGB، وأصبحت قراءة/كتابة BMP/PPM بتدرج الرمادي أسرع.
المستشعر والنظام:
أُصلحت مؤقتات
pyb.Servo(أصبح Servo يعمل)، ودقة HQVGA، وموثوقية تهيئة بطاقة SD، وإعادة تهيئة التخزين بعد إعادة الضبط الناعمة، وإعادة تشغيل REPL عند عدم وجود برنامج نصي.
العتاد ودعم اللوحات¶
مستشعر كاميرا OV7725.
درع LCD (وحدة
lcd)، وكاميراmlxالحرارية، وأساسيات WiFi لـ ATWINC1500.
تغييرات واجهة البرمجة الكاسرة¶
الكسور في واجهة البرمجة المرئية للمستخدم بين v1.1.0 وv1.2.0. النطاق: وحدات Python بلغة C في modules/ ومكتبات Python في scripts/libraries/.
جميع التغييرات الكاسرة الثلاثة هي تغييرات في السلوك لدوال sensor الأساسية (واجهة برمجة واحدة، سلوك مختلف) — أعد فحص البرامج النصية المتأثرة. يرتبط كل تجزئة (hash) للالتزام بفرقه (diff) على GitHub. (الغالبية العظمى من هذا الإصدار هي واجهة برمجة جديدة بُنيت ضمن نطاق v1.1→v1.2 وهي بالتالي إضافية لا كاسرة.)
sensor.reset() لم تعد تطبّق إعداداً افتراضياً (سلوك)¶
لم تعد sensor.reset() تطبّق تكويناً افتراضياً مدمجاً (pixformat / framesize / framerate / gain / contrast / brightness / saturation). البرامج النصية التي اعتمدت على أن reset() تترك إعداداً افتراضياً قابلاً للاستخدام يجب الآن أن تستدعي صراحةً sensor.set_pixformat() وsensor.set_framesize() (وأي إعدادات أخرى) بعد reset().
الالتزامات: d1e782df3
sensor.snapshot() تطلق استثناءً عند انتهاء المهلة (سلوك)¶
تطلق sensor.snapshot() الآن RuntimeError("Sensor Timeout!!") عند انتهاء مهلة المستشعر بدلاً من التعلّق إلى أجل غير مسمى. غلّف snapshot() داخل try / except RuntimeError إذا كنت بحاجة إلى تحمّل انتهاء المهل.
الالتزامات: e3f41d674
sensor.set_pixformat() تطلق استثناءً عند صيغة غير مدعومة (سلوك)¶
تطلق sensor.set_pixformat() الآن استثناءً عند إعطائها صيغة بكسل غير مدعومة بدلاً من إرجاع False. يجب على الشفرة التي كانت تفحص قيمة الإرجاع False أن تلتقط الاستثناء بدلاً من ذلك.
الالتزامات: e0c5822c2
قائمة مراجعة الترحيل¶
للنقل النظيف إلى v1.2.0، العمل المعتاد هو:
اضبط صراحةً
sensor.set_pixformat()/sensor.set_framesize()بعدsensor.reset()(تغيير reset).غلّف
sensor.snapshot()داخلtry/except RuntimeErrorإذا كنت بحاجة إلى تحمّل انتهاء مهل المستشعر (تغيير snapshot).التقط الاستثناء من
sensor.set_pixformat()بدلاً من فحصFalse(تغيير set_pixformat).
تعمل جميع البرامج النصية الأخرى دون تغيير.