Агуулгын хүснэгт:

OpenCV ашиглан энгийн өнгө илрүүлэх: 6 алхам
OpenCV ашиглан энгийн өнгө илрүүлэх: 6 алхам

Видео: OpenCV ашиглан энгийн өнгө илрүүлэх: 6 алхам

Видео: OpenCV ашиглан энгийн өнгө илрүүлэх: 6 алхам
Видео: MJC Stream: Видишь енота? А он есть! Главное об ML и компьютерном зрении 2024, Оны зургадугаар сарын
Anonim
OpenCV ашиглан энгийн өнгө илрүүлэх
OpenCV ашиглан энгийн өнгө илрүүлэх

Сайн байна уу! Өнөөдөр би OpenCV болон python ашиглан амьд видеоноос өнгө олж илрүүлэх энгийн аргыг үзүүлэх гэж байна.

Үндсэндээ би шаардлагатай өнгийг арын дэвсгэр дээр байгаа эсэхийг шалгах болно, гэхдээ OpenCV модулийг ашиглан би тэр бүсийг масклаж, хүрээг нэгэн зэрэг харуулна.

Алхам 1: Толгой файлууд

Толгой файлууд
Толгой файлууд

Одоо энд би cv2 ба NumPy гэсэн хоёр толгой файлыг ашигласан. Үндсэндээ cv2 бол OpenCV номын сан бөгөөд кодууд дахь командыг ашиглахад чухал ач холбогдолтой бүх c ++ файлуудыг ачаалдаг (үүнд бүх тодорхойлолтыг агуулдаг).

Мөн Numpy бол олон хэмжээст массивыг хадгалахад зайлшгүй шаардлагатай python номын сан юм. Бид өнгөний хүрээний координатаа хадгалахын тулд ашиглах болно.

Мөн numpy as np нь үндсэндээ numpy -ийн оронд np -ийг ашиглан кодоо бага зэрэг богиносгоход тусалдаг.

Алхам 2: Видео бичлэг хийх

Видео бичлэг хийж байна
Видео бичлэг хийж байна

Питон ашиглах үед энэ нь маш энгийн зүйл юм. Энд бид видео бичигчийг асаах хэрэгтэй бөгөөд ингэснээр жаазыг бичиж эхлэх боломжтой болно.

Одоо VideoCapture доторх утга нь камерыг харуулж байна, миний хувьд камер миний зөөврийн компьютерт холбогдсон байгаа тул 0 байна.

Та хоёрдогч камер гэх мэт 1 -тэй адил явж болно. VideoCapture нь түүнд зориулагдсан объектыг бий болгодог.

Алхам 3: Хүрээг авах, өнгө тодорхойлох

Хүрээг авах, өнгө тодорхойлох
Хүрээг авах, өнгө тодорхойлох

Одоо бид видеог шуурхай авахын тулд ямар нэгэн зүйл хийх ёстой бөгөөд энэ нь дүрсийг гаргаж авахад тусалж, шаардлагатай бол үүн дээр ажиллах боломжтой болно.

"while" давталт нь давталтыг шаардлагатай хугацаандаа ажиллуулахад бидэнд туслах болно. Одоо "_, frame = cap.read ()" нь авсан хүрээний хүчинтэй эсэхийг шалгаж хадгалахад ашиглагддаг. "cap.read () нь логик хувьсагч бөгөөд хэрэв хүрээ зөв уншигдсан бөгөөд хэрэв танд хүрээ байхгүй бол ямар ч алдаа харагдахгүй бол та зүгээр л None -ийг авах болно.

Одоо 11 ба 12 -р мөрөнд үндсэндээ бидний илрүүлэх ёстой өнгөний хүрээг тодорхойлно. Үүний тулд би цэнхэр өнгийг ашигладаг байсан.

Та хүссэн өнгөөрөө үргэлжлүүлж болно, зөвхөн тухайн өнгөний хувьд BGR утгыг бичээрэй. Numpy массивыг ашиглан хоёр массивыг тодорхойлох нь илүү дээр юм, учир нь бодит ертөнцөд тодорхой өнгийг олж илрүүлэх нь бидний зорилгод нийцэхгүй, харин бид цэнхэр өнгийг тодорхойлж, хүрээ дотор нь илрүүлэх болно.

Үүний тулд би 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 ()" нь дарахад if block командыг гүйцэтгэх бөгөөд энэ нь давталтаас гарах тэмдэгтийг тодорхойлдог.

Дараа нь cap.release () видео бичигчийг хааж, cv2.destroyAllWindows () нь нээгдсэн бүх цонхыг хаадаг.

Хэрэв танд ямар нэгэн асуудал байвал надад мэдэгдээрэй.

Эх кодын линк:

Зөвлөмж болгож буй: