
Mundarija:
- Ta'minotlar
- 1 -qadam: kutubxonalarni import qilish
- 2 -qadam: Track barlarini yaratish
- 3 -qadam: Rang, to'yinganlik va qiymat uchun TrackBars yaratish
- 4 -qadam: Rasmni qanday o'qish va hajmini o'zgartirish
- 5 -qadam: Rasmga tatbiq etish uchun treklar qiymatini o'qish
- 6 -qadam: Tasvirni ko'rsatish va yuqori va pastki chegarani o'rnatish
- 7 -qadam: Endi oxirgi qadam
- 8 -qadam: Yakuniy natijalar
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14


Salom! Bu ko'rsatma, OpenCV kutubxonasi yordamida python tasviridan ma'lum bir rangni ajratish bo'yicha qo'llanma uchun ishlatiladi. Agar siz bu texnikani yangi bilgan bo'lsangiz, xavotir olmang, ushbu qo'llanmaning oxirida siz o'zingizning rang aniqlash dasturini dasturlashingiz mumkin bo'ladi.
Quyidagi funktsiyalar yoki biz siz o'rganadigan texnikani ayta olamiz, 1. Tasvirni qanday o'qish kerak
2. Track barlar qanday yaratiladi
3. Ranglar, to'yinganlik va tasvirning qiymatini yo'l chiziqlari yordamida qanday sozlash mumkin
4. Va keyin sizning yakuniy natijangiz bo'ladi
Siz quyida men qo'shgan chiqish videosini ko'rishingiz mumkin.
Shunday qilib, boshlaylik
Ta'minotlar
- Python 3
- openCV kutubxonasi
- noaniq kutubxona
1 -qadam: kutubxonalarni import qilish

Rasm sariq Ferrari -da ko'rsatilganidek, biz tasvirdan faqat sariq rangni ajratib olishni dasturlashtiramiz
Birinchi qadam kutubxonalarimizni import qilish bo'ladi
1. OpenCV kutubxonasini o'z ichiga oladi. Pythonda u cv2 deb nomlanadi
2. Numpy kutubxonasini np sifatida kiritish. "As" bizga np kabi numpy qilishimizga imkon beradi, shuning uchun numpyni qayta -qayta yozishning hojati yo'q
2 -qadam: Track barlarini yaratish

Yo'l chiziqlari tasvirdagi rang, to'yinganlik va qiymat qiymatini sozlash uchun yaratilgan.
cv2.namedWindow ("TrackBars") Ushbu kod qatori yangi chiqish oynasini yaratish uchun ishlatiladi va oynaning nomi TrackBars sifatida berilgan (Siz xohlagan nomni berishingiz mumkin)
cv2.resizeWindow ("TrackBars", 600, 250) Bu funksiya oynaning o'lchamini o'zgartirish uchun ishlatiladi. "TrackBars" - bu qaysi oynaning o'lchamini o'zgartirmoqchisiz, chunki men TrackBars oynasining o'lchamini o'zgartirmoqchi edim, men bu nomni yozganman. Undan keyin ikkita butun son. Bu ikkita butun son - balandlik va kenglik. O'lchamni o'zgartirish uchun siz ikkita raqam bilan o'ynashingiz mumkin
3 -qadam: Rang, to'yinganlik va qiymat uchun TrackBars yaratish


Endi biz rang, to'yinganlik va qiymat uchun jami 6 ta TrackBars yaratamiz. Har birida ikkita, ya'ni minimal 1 va maksimal 1 bo'ladi. Biz openCV -ning createTrackbar funktsiyasidan foydalanamiz. Avval bu funksiyaning sintaksisini ko'rib chiqamiz.
cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Bu chalkash bo'lishi mumkin, lekin xavotir olmang, biz har qadamni bosib o'tamiz. Shuni yodda tutingki, ochiq CVda tus 179, to'yinganlik 255 va qiymat 255 ga teng.
1. Minimal rang uchun TrackBar yaratish:
cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, bo'sh)
Hue min-bu treklar nomi, TrackBars-asosiy oyna, 0-bizning slayderimiz joylashadigan joy va 179-silindr 0-179 oralig'ida harakatlanishini bildiradi.
2. Hue max uchun TrackBar yaratish:
cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, bo'sh)
Bu Hue max-da izlar paneli nomi, TrackBars-asosiy oyna, 179-bizning slayderimiz joylashadigan joy va 179-maksimal diapazon, silindr 179-0 dan siljishini bildiradi.
3. Xuddi shunday, rasmda ko'rsatilganidek, min, sat max, val min va val max uchun qadamlarni takrorlang
Oq fonli tasvir - bu chiqish tasviri. Sizning treklaringiz shunday ko'rinadi
4 -qadam: Rasmni qanday o'qish va hajmini o'zgartirish

cv2.imread () tasvirni o'qishga imkon beradi. Shuni yodda tutish kerakki, sizning rasmingiz joylashuvi dastur saqlanadigan papkada bo'lishi kerak. Biz while loopini kiritamiz, chunki u tasvirni o'qib bo'lguncha yoki shart to'g'ri kelguncha aytishimiz kerak
img = cv2.imread ("ferrari.jpg")
- Bunda men tasvirni saqlaydigan "img" o'zgarmaydigan nomini yaratdim
- Cv2.imread ichida ikki tirnoq ichida kengaytmasi bo'lgan tasvir nomini yozing
Rasm hajmini o'zgartirish uchun biz cv2.resize funktsiyasidan foydalanamiz. Bu qism ixtiyoriy, agar siz o'lchamini o'zgartirmoqchi bo'lsangiz, bu funksiyadan foydalanishingiz mumkin
Cv2.resize ichida avval tasvir saqlanadigan o'zgaruvchining nomini, so'ngra kengligi va balandligini yozing
5 -qadam: Rasmga tatbiq etish uchun treklar qiymatini o'qish


Xo'sh, endi biz chiziqlar paneli qiymatlarini o'qiymiz, shuning uchun biz uni rasmimizga qo'llashimiz mumkin. Biz qiymatlarni cv2.getTrackbarPos () funktsiyasi yordamida olamiz.
Shu qismdan boshlaylik …
h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")
Yuqoridagi bayonotda men h_min o'zgarmaydigan nomini yarataman, unda men Hue min qiymatini saqlayman. Shunday qilib, cv2.getTrackbarPos 1 -argumenti "Hue min" bo'ladi, chunki men hue min qiymatlarini xohlayman (imlo, createTrackbar funksiyasi bilan bir xil bo'lishi kerak) va 2 -argument u tegishli bo'lgan iz paneli oynasining nomi bo'ladi.
- Yuqoridagi rasmda ko'rsatilgandek h_max va qolgan funktsiyalar uchun xuddi shu jarayonni takrorlang va keyin print () yordamida barcha qiymatlarni chop eting.
- Chiqish ikkinchi rasmda ko'rsatilgan. Bu h_min, h_max, s_min, s_max, v_min, s_max qiymatlarini chop etadi.
6 -qadam: Tasvirni ko'rsatish va yuqori va pastki chegarani o'rnatish

Endi biz rang, to'yinganlik va qiymatning minimal va maksimal qiymatiga egamiz, biz bu qiymatni tasvirni filtrlash uchun ishlatamiz, shunda biz tasvirning o'ziga xos rangini chiqaramiz.
Buning uchun niqobni cv2.inRange funktsiyasidan foydalanib yaratamiz. Va bundan oldin biz rang, to'yinganlik va qiymatning yuqori va pastki chegaralarini o'rnatamiz
Shunday qilib, "pastroq" o'zgarmaydigan nomini yarating va numpy qator funktsiyasidan foydalanib, har 3 uchun min oralig'ini quyidagicha o'rnating
pastroq = np.array ([h_min, s_min, v_min])
Xuddi shu qadamni yuqori qism uchun takrorlang
yuqori = np.array ([h_max, s_max, v_max])
Endi biz quyidagi tarzda niqob yaratamiz
mask = cv2.inRange (o'lchamini, pastki, yuqori) ichida cv2.inRang ichida 1 -argument mening oxirgi rasmim saqlanadigan o'zgaruvchi bo'ladi, 2 -argument pastki chegara, 3 -argument esa yuqori chegara bo'ladi.
Endi biz asosiy tasvir va niqobni ko'rsatamiz. Ko'rsatish uchun biz cv2.imshow () funktsiyasidan foydalanamiz
cv2.imshow ("img", hajmini o'zgartirish) Bu asosiy tasvirni ko'rsatish uchun. 1 -argument - bu siz xohlagan ismni berishingiz mumkin bo'lgan oynaning nomi, 2 -argument - bu mening asosiy rasmim saqlanadigan o'zgaruvchan, siz ko'rsatmoqchi bo'lgan.
Xuddi shunday niqob uchun amallarni takrorlang
cv2.imshow ("Chiqish", niqob)
7 -qadam: Endi oxirgi qadam

Oxirgi bosqichda biz mashinaning rangini ajratib ko'rsatamiz.
Men o'zgaruvchining nomi natijasini yaratdim. Yana siz xohlagan ismingizni berishingiz mumkin. Shunday qilib, biz cv2.bitwise_and () funktsiyasidan foydalanamiz, bunda biz rasmlarni birgalikda qo'shamiz va yangi tasvir yaratamiz. Ikkala tasvirdagi piksellar qaerda bo'lsa ham, buni ha yoki "1" deb qabul qiladi.
natija = cv2.bitwise_and (o'lchamini o'zgartirish, hajmini o'zgartirish, niqob = niqob)
- Bunda birinchi dalil bizning imidjimiz bo'ladi
- Ikkinchi dalil ham bizning asl qiyofamiz bo'ladi, lekin undan keyin biz yaratgan niqob qo'llaniladi
- Va nihoyat, natijani imshow funktsiyasidan foydalanib ko'rsatish
Bu oxirgi qadamni nusxa ko'chiring, bu shunchaki kechikish va siz klaviaturadagi "a" tugmachasini bosib chiqish oynasidan chiqishingiz mumkin
8 -qadam: Yakuniy natijalar
Tavsiya:
Pythonda OpenCV yordamida QR kod skaneri: 7 qadam

Python-da OpenCV-dan foydalangan holda QR-kod skaneri: Hozirgi dunyoda biz QR-kod va shtrix-kodni deyarli hamma joyda ishlatamiz, mahsulotni qadoqlashdan tortib to onlayn to'lovlar va hozir biz menyuni ko'rish uchun restoranda ham QR-kodlarni ko'ramiz. shubhasiz, hozir bu katta fikr. Lekin siz hech qachon voy bo'ldingizmi
OpenCV yordamida oddiy rangni aniqlash: 6 qadam

OpenCV yordamida oddiy rangni aniqlash: Salom! Bugun men OpenCV va python yordamida jonli videodan rangni aniqlashning oddiy usulini ko'rsatmoqchiman, asosan, kerakli rangning fon ramkasida mavjudligini yoki yo'qligini tekshirib ko'raman va OpenCV modullari yordamida men bu hududni niqoblayman va
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
Har tomonlama g'ildirak va OpenCV -ga asoslangan ranglarni kuzatuvchi robot: 6 qadam

Rangni kuzatish roboti ko'p yo'nalishli g'ildirak va OpenCV -ga asoslangan: Men ranglarni kuzatishni amalga oshirish uchun har tomonlama g'ildirak shassisidan foydalanaman va men OpenCVBot nomli mobil dasturidan foydalanaman. Bu erda dasturiy ta'minot ishlab chiqaruvchilarga rahmat aytaman, OpenCV Bot aslida tasvirni qayta ishlash orqali har qanday ob'ektni aniqlaydi yoki kuzatadi
Microbit yordamida ranglarni ajratish loyihasini qanday qilish mumkin ?: 4 qadam

Microbit yordamida ranglarni ajratuvchi loyihani qanday qilish mumkin?: Loyihaning maqsadlari Dasturni yuklab olgandan so'ng, biz mikro: bitli LED nuqta matritsasi "yurak" ni ko'rsatishini, servo 90 ° ga o'rnatilishini ko'ramiz. Rang sensori ustiga ko'k yoki sariq narsalarni qo'ysak, servo har xil burchakka buriladi va boshqasini tasniflaydi