Სარჩევი:

OpenCV ძირითადი პროექტები: 5 ნაბიჯი
OpenCV ძირითადი პროექტები: 5 ნაბიჯი

ვიდეო: OpenCV ძირითადი პროექტები: 5 ნაბიჯი

ვიდეო: OpenCV ძირითადი პროექტები: 5 ნაბიჯი
ვიდეო: Расчет уровня вовлеченности сотрудников. Бережливое производство. 2024, ივლისი
Anonim
OpenCV ძირითადი პროექტები
OpenCV ძირითადი პროექტები

ამ პროექტში ჩვენ შევისწავლით OpenCV– ს ძირითად ფუნქციონირებას 4 მარტივი პროექტის საშუალებით, რომელიც მოიცავს პირდაპირ ვიდეო ნაკადს. ეს არის სახის ამოცნობა, ფონის მოცილება, კიდეების სპეციალური ვიზუალური გაწევა და ბუნდოვანი ეფექტის გამოყენება ცოცხალ ვიდეო ნაკადზე. ამ პროექტების განსახორციელებლად ჩემი მთავარი მიზანი იყო OpenCV ინტერფეისით ფეხების დასველება, რადგან ვგეგმავ ღრმად ჩავუღრმავდე კომპიუტერულ ხედვას

მარაგები

  • კომპიუტერი მუშაობს პითონზე
  • გახსენით CV ბიბლიოთეკა, Numpy ბიბლიოთეკა, tkinter ბიბლიოთეკა, sys ბიბლიოთეკა
  • კამერა კომპიუტერთან დასაკავშირებლად (თუ კომპიუტერი მას უკვე არ შეიცავს)
  • პროგრამის პითონის ფაილი (შედის ამ ინსტრუქციაში)
  • 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 იღებს ბევრ სურათს ჩვენს მარყუჟში თითოეული სურათი შემდეგ განიმარტება და იცვლება, როგორც ჩვენ გვსურს. FaceDetect– ისთვის ჩვენ ვიღებთ სურათს ნაცრისფერში cvtColor ფუნქციის გამოყენებით, რომელიც გადააქცევს პირველ სურათში მოცემულ სურათს მეორე პარამეტრში მითითებული გამოსახულების ფერის კონკრეტულ ტიპზე. მეორე პარამეტრის მისაღები მნიშვნელობების ჩამონათვალი შეგიძლიათ იხილოთ ინტერნეტში. შემდეგ ჩვენ ვაჩვენებთ სურათს ფანჯარაში სახელად "სახის გამოვლენა" imshow () ფუნქციის გამოყენებით, რომელიც იღებს სტრიქონს ფანჯრის სახელისა და გამოსახულების ჩარჩოს ჩვენებისათვის.

დაბოლოს, ჩვენ ველოდებით მომხმარებლის მიერ q ღილაკის შეყვანას cv2.waitKey () ფუნქციის გამოყენებით. 0xFF ნიღაბი გამოიყენება როგორც კონვენცია 64 ბიტიანი კომპიუტერებისთვის. მას შემდეგ, რაც მომხმარებელმა დაასრულა ვიდეო ნაკადი, faceDetect ფუნქცია ათავისუფლებს გადაღების ობიექტს და ანადგურებს OpenCV ინტერფეისის ქვეშ გახსნილ ნებისმიერ სხვა ფანჯარას. ყველა სხვა ფუნქცია მიჰყვება მსგავსი დიზაინის სტრუქტურას.

ნაბიჯი 2: BackgroundRemove ფუნქცია

BackgroundRemove ფუნქცია
BackgroundRemove ფუნქცია
BackgroundRemove ფუნქცია
BackgroundRemove ფუნქცია

ეს ფუნქცია ცდილობს ამოიღოს ჩვენი ვიდეოს ფონის ნაწილი და დატოვოს მხოლოდ წინა პლანზე გამოსახულება. შეიძლება ზოგიერთ კამერაზე არ იმუშაოს, რადგან ისინი იყენებენ განათების რეგულირების ფუნქციებს, რომელიც გააქტიურებულია, როდესაც სხვადასხვა ობიექტი/ კერა ჩადის ჩარჩოში. თუ თქვენი backgroundRemove ფუნქცია არ მუშაობს, არ ინერვიულოთ- ეს შეიძლება იყოს თქვენი კამერა!

ამ ფუნქციის გამოსაყენებლად, გადადგით კამერის ჩარჩოდან და დააჭირეთ ღილაკს "d", რომ გადაიღოთ ფონის სურათი. მნიშვნელოვანია, რომ არ იყოს მოძრავი საგნები იმ ფონზე, რომლის გადაღებაც გსურთ. შემდეგ ჩვენ შეგვიძლია უკან დავიხიოთ კამერის ჩარჩოში. თუ ფუნქცია მუშაობდა, მომხმარებელმა უნდა ნახოს საკუთარი თავი მხოლოდ ფუნქციის ვიდეო ნაკადზე. ნებისმიერი ხმაური/შავი ლაქები წინა სურათზე შეიძლება იყოს კამერის განათების კორექტირების შედეგი. სხვა ფონის გადასაღებად, დააჭირეთ "r" ღილაკს ხელახლა ინიციალიზაციისთვის, შემდეგ კვლავ დააჭირეთ "d"-ს.

ამ ფუნქციის ზოგიერთი ძირითადი მიდგომა არის "დროშის" ბულანის გამოყენება, რომელიც დგება მომენტში, როდესაც მომხმარებელი დააჭერს d ღილაკს. ეს აღბეჭდავს ფონს და გვაძლევს საშუალებას ამოვიღოთ ის ვიდეოდან, რომელიც გადადის ფუნქციით. ჩვენ ვცდილობთ შევინახოთ ფონის სურათი ref_img- ში, რათა განვასხვავოთ იგი წინა პლანზე, რომელიც იღებს ნებისმიერ მოძრავ ობიექტს. ჩვენ ვიყენებთ cv2.subtract () ფუნქციას, რომ გამოვაკლოთ წინა სურათის უკანა ფონი და პირიქით, შემდეგ კი გავაუქმოთ ნებისმიერი მცირედი განსხვავება ორ სურათში დაუყოვნებლივ. ფონი გაშავებულია.

Fgmask მზადდება ამ ორ სურათს შორის განსხვავების გამოყენებით და შემდეგ გამოიყენება ფუნქციების ვიდეო ნაკადზე OpenCV cv2.bitwise_and () ფუნქციის გამოყენებით.

ნაბიჯი 3: VideoEdges ფუნქცია

VideoEdges ფუნქცია
VideoEdges ფუნქცია
VideoEdges ფუნქცია
VideoEdges ფუნქცია

ეს ფუნქცია აბრუნებს ჩვენს პირდაპირ ვიდეო ნაკადს, მაგრამ ამოსაცნობი კიდეები თეთრი ხდება, დანარჩენი კი შავდება. ის, რაც განასხვავებს ამ ფუნქციას სხვა ფუნქციებისაგან, არის ჩვენი ორიგინალური ვიდეოს კონვერტაცია RBG ფორმატიდან HSV- ზე, რაც ნიშნავს ელფერი, გაჯერება და ცვალებადობა- სინათლისა და ფერის დამუშავების განსხვავებული მეთოდი ვიდეოდან. ამ მეთოდით, ჩვენ უფრო მარტივად შეგვიძლია გამოვყოთ ვიდეოში არსებული კონტურები ფილტრის გამოყენებით (წითელი ქვემოდან წითლამდე მაღალი).

Canny Edge Detection გამოიყენება გამოსახულების კიდეების გამოსავლენად. იგი იღებს ნაცრისფერი მასშტაბის სურათს შეყვანის სახით და იყენებს მრავალსაფეხურიან ალგორითმს.

ნაბიჯი 4: VideoBlur ფუნქცია

VideoBlur ფუნქცია
VideoBlur ფუნქცია
VideoBlur ფუნქცია
VideoBlur ფუნქცია

ეს ფუნქცია გამოიყენება ჩვენს ვიდეო ნაკადზე ბუნდოვანი ეფექტის დასამატებლად. მარტივი ფუნქცია იძახებს GaussianBlur cv2 ფუნქციას ჩვენს ჩარჩოზე. დამატებითი ინფორმაცია gaussianBlur ფუნქციის შესახებ შეგიძლიათ იხილოთ აქ:

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

ნაბიჯი 5: გაუმჯობესება

ამ პროექტის ყველაზე მგრძნობიარე ფუნქციაა ფონის მოცილების ფუნქცია, რადგან ის მოითხოვს კამერის გამოყენებას, რომელსაც არ გააჩნია განათების რეგულირების ფუნქცია. OpenCV ბიბლიოთეკაში შეიძლება არსებობდეს ფუნქციების უკეთესი ნაკრები, რომელსაც შეუძლია შეაფასოს განათების ეს კორექტირება და შეუფერხებლად წაშალოს ფონი (მწვანე ეკრანის მსგავსი).

ჩვენ ასევე შეგვიძლია გამოვიყენოთ სახის ამოცნობის სხვა ფუნქციები, რომლებმაც შეიძლება წარმოქმნან ობიექტები უფრო მეტი ფუნქციონირებით, გარდა უბრალოდ (x, y) კოორდინატებისა. ალბათ სახის ამოცნობის პროგრამა, სახეების დამახსოვრების უნარით, არ იქნებოდა ძნელი განსახორციელებელი.

ბუნდოვანი ფუნქცია შეიძლება უფრო მორგებული იყოს მომხმარებლის მიერ ინტუიციური კონტროლის საშუალებით. მაგალითად, მომხმარებელს შეიძლება მოუნდეს ბუნდოვანი ეფექტის ინტენსივობის მორგება ან ჩარჩოში არსებული კონკრეტული არე დაბინდვის მიზნით.

გირჩევთ: