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).
تعمل جميع البرامج النصية الأخرى دون تغيير.