جدول المحتويات:

اكتشاف بسيط للألوان باستخدام OpenCV: 6 خطوات
اكتشاف بسيط للألوان باستخدام OpenCV: 6 خطوات

فيديو: اكتشاف بسيط للألوان باستخدام OpenCV: 6 خطوات

فيديو: اكتشاف بسيط للألوان باستخدام OpenCV: 6 خطوات
فيديو: انشاء برنامج للتعرف على العناصر باستخدام بايثون | python object detection opencv 2024, يونيو
Anonim
اكتشاف بسيط للألوان باستخدام OpenCV
اكتشاف بسيط للألوان باستخدام OpenCV

أهلا! سأقوم اليوم بعرض طريقة بسيطة لاكتشاف لون من فيديو مباشر باستخدام OpenCV و python.

في الأساس ، سأختبر اللون المطلوب الموجود في إطار الخلفية أم لا ، وباستخدام وحدات OpenCV ، سأقوم بإخفاء تلك المنطقة وعرض الإطار في نفس الوقت.

الخطوة 1: ملفات الرأس

ملفات الرأس
ملفات الرأس

لقد استخدمت هنا ملفي رأس هما cv2 و NumPy. أساسًا cv2 هي مكتبة OpenCV التي تقوم بتحميل جميع ملفات c ++ المهمة أثناء استخدام الأوامر الموجودة في الأكواد (تحتوي على جميع التعريفات).

و Numpy هي مكتبة بيثون ضرورية لتخزين مصفوفة متعددة الأبعاد. سنستخدم لتخزين إحداثيات نطاق الألوان لدينا.

و numpy as np يساعد بشكل أساسي الكود الخاص بنا على التقصير قليلاً باستخدام np في كل مرة بدلاً من numpy.

الخطوة الثانية: التقاط الفيديو

التقاط الفيديو
التقاط الفيديو

هذا بسيط جدًا أثناء استخدام بيثون. هنا نحتاج فقط إلى تشغيل مسجل الفيديو حتى يتمكن من بدء تسجيل الإطارات.

الآن تشير القيمة الموجودة داخل VideoCapture إلى الكاميرا ، في حالتي ، الكاميرا متصلة بجهاز الكمبيوتر المحمول الخاص بي ، لذا 0.

يمكنك الانتقال بشكل مشابه إلى 1 للكاميرا الثانوية وما إلى ذلك. VideoCapture يخلق الكائن لذلك.

الخطوة 3: التقاط الإطار وتحديد اللون

التقاط الإطار وتحديد اللون
التقاط الإطار وتحديد اللون

الآن علينا أن نفعل شيئًا حتى نتمكن من التقاط الإطار الفوري للفيديو الذي سيساعدنا على استخراج الصورة ويمكننا العمل على ذلك وفقًا للمتطلبات.

ستساعدنا حلقة "while" في تشغيل الحلقة وفقًا لوقت متطلباتنا. يتم الآن استخدام "_، frame = cap.read ()" للتحقق من صلاحية الإطار الذي تم التقاطه وتخزينه. "cap.read () متغير منطقي ويعود صحيحًا إذا تمت قراءة الإطار بشكل صحيح وإذا لم تحصل على إطارات فلن يظهر أي خطأ ، ستحصل ببساطة على None.

الآن السطر 11 والخط 12 يحددان أساسًا نطاق اللون الذي نحتاج إلى اكتشافه. لهذا ، لقد اعتدت على اللون الأزرق.

يمكنك المتابعة مع أي لون لذلك تحتاج فقط إلى كتابة قيم BGR لهذا اللون المعين. من الأفضل تحديد مصفوفتين باستخدام المصفوفات غير الدقيقة لأن اكتشاف لون معين في العالم الحقيقي لن يخدم غرضنا ، بل سنحدد نطاقًا من اللون الأزرق بحيث يكتشف داخل النطاق.

لهذا ، قمت بتحديد متغيرين يخزنان قيم BGR المنخفضة وقيم BGR العليا.

الخطوة 4: اخفاء واستخراج

اخفاء واستخراج
اخفاء واستخراج

الآن هنا تأتي المهمة الرئيسية المتمثلة في إخفاء الإطار واستخراج لون الإطار. لقد استخدمت الأوامر المحددة مسبقًا الموجودة في المكتبة في OpenCV للقيام بالإخفاء. التقنيع بشكل أساسي هو عملية إزالة جزء من الإطار ، أي أننا سنزيل وحدات البكسل التي لا تكمن قيم BGR في لونها في نطاق الألوان المحدد ويتم ذلك بواسطة cv2.inRange. بعد ذلك ، نطبق نطاق الألوان على الصورة المقنعة اعتمادًا على قيم البكسل ولهذا ، سنستخدم cv2.bitwise_and ، وسوف نقوم ببساطة بتعيين الألوان إلى المنطقة المقنعة اعتمادًا على قيم القناع ونطاق الألوان.

رابط لـ cv2. bitwise_and:

الخطوة 5: العرض أخيرًا

عرض أخيرا!
عرض أخيرا!

لقد استخدمت هنا cv2.imshow () الأساسي لعرض كل إطار كصورة. نظرًا لأن لدي بيانات الإطار المخزنة في متغيرات ، يمكنني استرجاعها في imshow (). لقد قمت هنا بعرض جميع الإطارات الثلاثة ، الأصلية والمقنعة والملونة.

الآن علينا الخروج من حلقة while. لهذا ، يمكننا ببساطة تنفيذ cv2.wait. Key (). في الأساس يخبر وقت الانتظار قبل الرد. لذلك إذا مررت بـ 0 ، فسوف تنتظر إلى ما لا نهاية ويخبر 0xFF أن العمارة هي 64 بت. يحدد "ord ()" الحرف الذي عند الضغط عليه سينفذ الأمر break في كتلة if وسيخرج من الحلقة.

ثم يغلق cap.release () مسجل الفيديو ويغلق cv2.destroyAllWindows () جميع النوافذ المفتوحة.

إذا كان لديك أي مشكلة ، يرجى إعلامي.

رابط لكود المصدر:

موصى به: