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

OpenCV -ийн үндсэн төслүүд: 5 алхам
OpenCV -ийн үндсэн төслүүд: 5 алхам

Видео: OpenCV -ийн үндсэн төслүүд: 5 алхам

Видео: OpenCV -ийн үндсэн төслүүд: 5 алхам
Видео: Аналоговые часы с Python Tkinter 2024, Долдугаар сарын
Anonim
OpenCV -ийн үндсэн төслүүд
OpenCV -ийн үндсэн төслүүд

Энэ төсөлд бид шууд видео дамжуулалтыг хамарсан 4 энгийн төслөөр дамжуулан OpenCV -ийн үндсэн функцуудыг судалж байна. Эдгээр нь нүүр царай таних, арын дэвсгэрийг арилгах, ирмэгийг тусгай харагдуулах, шууд видео дамжуулалтанд бүдгэрүүлэх нөлөө үзүүлэх явдал юм. Эдгээр төслүүдийг туршиж үзэх миний гол зорилго бол OpenCV интерфэйсээр хөлөө норгох явдал байсан, учир нь би компьютерийн харааны чиглэлээр илүү гүнзгий судлахаар төлөвлөж байсан.

Хангамж

  • Python дээр ажилладаг компьютер
  • Нээлттэй CV номын сан, Numpy номын сан, tkinter номын сан, sys номын сан
  • Компьютерт холбогдох камер (хэрэв компьютерт аль хэдийн ороогүй бол)
  • Програмын python файл (энэ зааварт багтсан болно)
  • haarcascade xml файл (энэ зааварт багтсан болно)

Алхам 1: FaceDetect функц

FaceDetect функц
FaceDetect функц
FaceDetect функц
FaceDetect функц

Энэ функц нь таны камерын видеог авсан нүүрэн дээрээ ногоон дөрвөлжин хэлбэрээр харуулдаг. Кодод бид cv2. VideoCapture () функцийг ашиглан барьж буй видеогоо "барих" нэртэй объектод хадгалдаг. CAPTURE_INDEX нь таны компьютерийн оруулсан видео жагсаалтын камерын индекстэй тохирч буй тоо юм. Хэрэв таны компьютерт холбогдсон гаднах камер байхгүй бол 0 эсвэл 1 нь ажиллах ёстой.

Face_cascade объектыг cascadeClassifier функц болон OpenCV github дээрээс олдсон "haarcascade_frontalface_default.xml" файлыг ашиглан эхлүүлсэн болно. Бид энэ объектыг "нүүр" жагсаалтаас олж илрүүлсэн нүүрүүдийг x координат, y координат, өргөн ба өндрийг агуулсан дөрвөн талын оролт хэлбэрээр хадгалах зорилгоор ашигладаг. Дараа нь cv2.rectangle функцийг ашиглан нүүрээ төгс хаах тэгш өнцөгт зурна

Энэ видеоноос OpenCV нь олон зургийг "while.read () ашиглан бидний зургийг" img "гэж нэрлэсэн фрэймд хадгалдаг. Дараа нь зураг бүрийг бидний хүссэнээр тайлбарлаж, өөрчилдөг. FaceDetect -ийн хувьд бид cvtColor функцийг ашиглан зургийг саарал болгож, эхний параметрт өгсөн ямар ч зургийг хоёр дахь параметрт заасан тодорхой төрлийн зургийн өнгө болгон хувиргадаг. Хоёрдахь параметрийн зөвшөөрөгдөх утгуудын жагсаалтыг онлайнаар олж болно. Дараа нь бид дүрсийг "Нүүрийг илрүүлэх" нэртэй цонхонд харуулахын тулд imshow () функцийг ашиглан харуулна.

Эцэст нь хэрэглэгч cv2.waitKey () функцийг ашиглан q товчлуурыг оруулахыг хүлээж байна. 0xFF маск нь 64 битийн компьютерт зориулагдсан болно. Хэрэглэгч видео дамжуулалтыг дуусгасны дараа faceDetect функц нь барих объектыг чөлөөлж, дараа нь OpenCV интерфэйс дээр нээгдсэн бусад цонхыг устгадаг. Бусад бүх функцууд нь ижил төстэй дизайны бүтэцтэй байдаг.

Алхам 2: BackgroundRemove функц

Үндсэн функцийг арилгах
Үндсэн функцийг арилгах
Үндсэн функцийг арилгах
Үндсэн функцийг арилгах

Энэ функц нь манай видеоны арын хэсгийг арилгаж, зөвхөн урд талын зургийг үлдээхийг оролддог. Зарим камер дээр ажиллахгүй байж магадгүй, учир нь тэдгээр нь янз бүрийн объект/ фокусыг хүрээ рүү оруулах үед идэвхждэг гэрэлтүүлгийн тохируулгын функцийг ашигладаг. Хэрэв таны backgroundRemove функц ажиллахгүй бол бүү санаа зов, энэ бол зүгээр л таны камер байж магадгүй юм!

Энэ функцийг ашиглахын тулд камерын хүрээнээс холдож, "d" товчлуурыг дарж арын зургийг авах боломжтой. Арын дэвсгэр дээр таны авахыг хүссэн хөдөлгөөнт объект байхгүй байх нь чухал юм. Дараа нь бид камерын хүрээ рүү буцаж орно. Хэрэв функц ажиллаж байсан бол хэрэглэгч зөвхөн функцын видео дамжуулалт дээр өөрийгөө харах ёстой. Урд талын зураг дээрх аливаа дуу чимээ/хар бөмбөлөг нь камерын гэрэлтүүлгийн тохируулгын үр дүн байж болно. Өөр дэвсгэр зураг авахын тулд "r" товчийг дарж дахин эхлүүлж, "d" дарна уу.

Энэ функцийг гүйцэтгэх гол арга бол хэрэглэгч d товчлуурыг дарах үед дээшлэх "туг" логикийг ашиглах явдал юм. Энэ нь арын дэвсгэрийг авч, функцээр дамжуулж буй видеоноос устгах боломжийг бидэнд олгодог. Бид арын зургийг ref_img дээр хадгалахыг зорьж байгаа бөгөөд ингэснээр аливаа хөдөлгөөнт объектыг барьж буй урд талын зургаас ялгах боломжтой болно. Бид cv2.subtract () функцийг ашиглан урд талын зургийг арын зургаас хасах ба эсрэгээр нь, дараа нь хоёр зургийн жижиг ялгааг даруй цуцална. Арын дэвсгэрийг харлуулж байна.

Fgmask нь эдгээр хоёр зургийн ялгааг ашиглан хийгдсэн бөгөөд дараа нь OpenCV cv2.bitwise_and () функцийг ашиглан видео дамжуулалтын функцүүдэд хэрэглэнэ.

Алхам 3: VideoEdges функц

VideoEdges функц
VideoEdges функц
VideoEdges функц
VideoEdges функц

Энэ функц нь бидний шууд видео дамжуулалтыг буцааж өгдөг боловч бусад бүх зүйлийг харанхуйлах үед илрэх ирмэгийг цагаан болгож өгдөг. Энэ функцийг бусад функцээс ялгаж харуулдаг зүйл бол бидний анхны видеог RBG форматаас HSV болгон хөрвүүлэх явдал юм. Энэ аргын тусламжтайгаар бид шүүлтүүр (red_low -ээс red_high) ашиглан видеон дээрх тоймыг илүү хялбар ялгаж чадна.

Canny Edge Detection нь зургийн ирмэгийг илрүүлэхэд ашиглагддаг. Энэ нь саарал масштабтай зургийг оролт болгон хүлээн авч, олон үе шаттай алгоритмыг ашигладаг.

Алхам 4: VideoBlur функц

VideoBlur функц
VideoBlur функц
VideoBlur функц
VideoBlur функц

Энэ функц нь манай видео урсгалд бүдгэрүүлэх нөлөө үзүүлэхэд ашиглагддаг. Энгийн функц нь манай хүрээ дээрх GaussianBlur cv2 функцийг дууддаг. GaussianBlur функцын талаарх дэлгэрэнгүй мэдээллийг эндээс авах боломжтой.

opencv-python-tutroals.readthedocs.io/en/l…

Алхам 5: Сайжруулалт

Энэхүү төслийн хамгийн мэдрэмтгий функц нь арын дэвсгэрийг арилгах функц бөгөөд гэрэлтүүлгийн тохиргоо хийгээгүй камер ашиглах шаардлагатай байдаг. OpenCV номын сангийн гэрэлтүүлгийн энэ тохиргоог тооцож, арын дэвсгэрийг жигд арилгах боломжтой илүү сайн функцууд байж магадгүй юм (ногоон дэлгэцтэй төстэй).

Бид мөн (x, y) координатыг буцааж өгөхөөс өөр илүү функциональ объектыг үйлдвэрлэх боломжтой нүүр илрүүлэх бусад функцийг ашиглаж болно. Царай санах чадвартай нүүр таних програмыг хэрэгжүүлэхэд тийм ч хэцүү биш байх.

Хэрэглэгчийн зөн совингийн хяналтаар бүдгэрүүлэх функцийг илүү тохируулах боломжтой. Жишээлбэл, хэрэглэгч бүдгэрүүлэх эффектийн эрчмийг тохируулах эсвэл бүдгэрүүлэх хүрээ доторх тодорхой хэсгийг сонгохыг хүсч болно.

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