Mundarija:
- 1 -qadam: Sarlavha fayllari
- 2 -qadam: videoni yozib olish
- 3 -qadam: Rasmni olish va rangni aniqlash
- 4 -qadam: Maskalash va ajratish
- 5 -qadam: Nihoyat ko'rsatiladi
- 6 -qadam: Demo
Video: OpenCV yordamida oddiy rangni aniqlash: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Salom! Bugun men OpenCV va python yordamida jonli videodan rangni aniqlashning oddiy usulini ko'rsatmoqchiman.
Asosan, men kerakli rangning fon ramkasida mavjudligini tekshiraman, lekin OpenCV modullari yordamida men bu hududni niqoblayman va bir vaqtning o'zida ramkani ko'rsataman.
1 -qadam: Sarlavha fayllari
Endi bu erda men ikkita sarlavha faylini ishlatdim, ya'ni cv2 va NumPy. Asosan, cv2 - bu OpenCV kutubxonasi bo'lib, u kodlardagi buyruqlardan foydalanganda muhim bo'lgan barcha c ++ fayllarini yuklaydi (unda barcha ta'riflar mavjud).
Va Numpy - bu ko'p o'lchovli massivni saqlash uchun zarur bo'lgan python kutubxonasi. Biz ranglar oralig'ining koordinatalarini saqlash uchun foydalanamiz.
Va numpy sifatida np asosan kodimizni har safar numpy o'rniga np yordamida biroz qisqartirishga yordam beradi.
2 -qadam: videoni yozib olish
Python -dan foydalanganda bu juda oddiy. Bu erda biz faqat videoregistratorni yoqishimiz kerak, shunda u kadrlarni yozishni boshlashi mumkin.
Endi VideoCapture ichidagi qiymat kamerani ko'rsatadi, menimcha, kamera noutbukga ulangan, shuning uchun 0.
Ikkilamchi kamera uchun ham xuddi shunday 1 ga o'tishingiz mumkin. VideoCapture buning uchun ob'ektni yaratadi.
3 -qadam: Rasmni olish va rangni aniqlash
Endi biz bu erda biror narsa qilishimiz kerak, shunda biz videoni tez suratga olishimiz mumkin, bu bizga tasvirni chiqarishga yordam beradi va biz talabga binoan ishlay olamiz.
"while" tsikli bizga kerakli vaqtni tanlashga yordam beradi. Endi "_, frame = cap.read ()" ramkaning olinganligini tekshirish uchun ishlatiladi va uni saqlaydi. "cap.read () - bu mantiqiy o'zgaruvchidir va agar ramka to'g'ri o'qilgan bo'lsa, rostni qaytaradi va agar sizda hech qanday ramka bo'lmasa, u hech qanday xato ko'rsatmaydi, siz esa None ni olasiz.
Endi 11 va 12 -qatorlar asosan biz aniqlashimiz kerak bo'lgan rang oralig'ini belgilaydi. Buning uchun men ko'k rangga o'rganib qolganman.
Siz har qanday rangni tanlashingiz mumkin, faqat shu rang uchun BGR qiymatlarini kiriting. Haqiqiy dunyoda ma'lum bir rangni aniqlash bizning maqsadimizga xizmat qilmaydi, aksincha biz ko'k rang oralig'ini aniqlaymiz, shunda u diapazonda aniqlanadi.
Buning uchun men pastki BGR va yuqori BGR qiymatlarini saqlaydigan ikkita o'zgaruvchini aniqladim.
4 -qadam: Maskalash va ajratish
Endi bu erda ramkani maskalash va ramkaning rangini chiqarishning asosiy vazifasi keladi. Men maskalash uchun OpenCV kutubxonasida mavjud bo'lgan oldindan belgilangan buyruqlardan foydalandim. Asosan niqoblash - bu ramkaning bir qismini olib tashlash jarayoni, ya'ni biz BGR ranglari belgilangan rang oralig'ida bo'lmagan va bu cv2.inRange yordamida bajariladigan piksellarni olib tashlaymiz. Shundan so'ng, biz piksellar qiymatiga qarab niqoblangan tasvirga rang diapazonini qo'llaymiz va buning uchun biz cv2.bitwise_and dan foydalanamiz, u niqob va rang diapazonining qiymatiga qarab niqoblangan hududga ranglarni tayinlaydi.
Cv2 uchun havola. bitwise_and:
5 -qadam: Nihoyat ko'rsatiladi
Bu erda men har bir kadrni tasvir sifatida ko'rsatish uchun asosiy cv2.imshow () dan foydalanganman. O'zgaruvchilarda saqlangan ramka ma'lumotlari bo'lgani uchun ularni imshow () da olishim mumkin. Bu erda men uchta ramkani ko'rsatdim, asl, niqobli va rangli.
Endi biz loop tsiklidan chiqishimiz kerak. Buning uchun biz faqat cv2.wait. Key () ni amalga oshirishimiz mumkin. Asosan, javob berishdan oldin kutish vaqtini ko'rsatadi. Shunday qilib, agar siz 0dan o'tsangiz, u cheksiz kutadi va 0xFF arxitekturaning 64bit ekanligini aytadi. "ord ()" tugmachasi bosilganda if buyrug'ini bajaradi va u loopdan chiqadi.
Keyin cap.release () videoregistratorni yopadi va cv2.destroyAllWindows () barcha ochilgan oynalarni yopadi.
Agar sizda biron bir muammo bo'lsa, menga xabar bering.
Manba kodiga havola:
Tavsiya:
Rangni aniqlash bo'yoq mashinasi: 4 qadam
Rangni aniqlash bo'yoq mashinasi: Rangni aniqlash bo'yoq mashinasi atrofingizdagi ranglardan nusxa ko'chiradi va ular bilan chizishga imkon beradi. Agar sizda asosiy ranglarning bo'yog'i bo'lsa, siz xohlagan rangni sezish va aralashtirish uchun RGB rang sensoridan foydalanishingiz mumkin. Ammo esda tutingki, yorqin rangli ob'ektdan foydalaning
Yuzni aniqlash va aniqlash - OpenCV Python va Arduino yordamida Arduino Face ID: 6 qadam
Yuzni aniqlash va aniqlash | OpenCV Python va Arduino yordamida Arduino Face ID: yuzni aniqlash AKA yuz identifikatori hozirgi vaqtda mobil telefonlarning eng muhim xususiyatlaridan biridir. Shunday qilib, menda "Arduino loyihasi uchun yuz identifikatori bo'lishi mumkinmi?" Degan savol bor edi. va javob ha … Mening sayohatim quyidagicha boshlandi: 1 -qadam: Bizga kirish
Rangni aniqlash W/ TCS230 sensori va Arduino [Kalibrlash kodi kiritilgan]: 12 qadam
Rangni aniqlash W/ TCS230 Sensor va Arduino [Kalibrlash kodi kiritilgan]: Umumiy nuqtai Ushbu qo'llanmada siz TCS230 sensori va ranglarni tanib olish uchun uni Arduino bilan qanday ishlatishni bilib olasiz. Qo'llanma oxirida siz rang tanlash qalamini yaratishning ajoyib g'oyasini topasiz. Ushbu qalam yordamida siz ranglarni skanerlashingiz mumkin
IR-masofadan turib rangni aniqlash o'yini: 3 qadam
Rangni masofadan turib aniqlashning o'yini: Men sizga ko'rsatma beraman, RGB boshqaruvini IR-masofadan boshqarish pulti yordamida qanday boshqarishni va undan qiziqarli o'yin yasashni ko'rsataman
RGB LED yordamida rangni aniqlash: 4 qadam
RGB LED yordamida rangni aniqlash: Siz hech qachon ob'ekt rangini aniqlashning avtomatlashtirilgan usulini xohlaganmisiz? Ob'ektga ma'lum bir rangning nurini berib, orqada qancha yorug'lik aks etayotganiga qarab, siz uning qaysi rang ekanligini bilib olishingiz mumkin. Masalan, agar siz qizil chiroqni yoqsangiz