Სარჩევი:
- მარაგები
- ნაბიჯი 1: FaceDetect ფუნქცია
- ნაბიჯი 2: BackgroundRemove ფუნქცია
- ნაბიჯი 3: VideoEdges ფუნქცია
- ნაბიჯი 4: VideoBlur ფუნქცია
- ნაბიჯი 5: გაუმჯობესება
ვიდეო: OpenCV ძირითადი პროექტები: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
ამ პროექტში ჩვენ შევისწავლით OpenCV– ს ძირითად ფუნქციონირებას 4 მარტივი პროექტის საშუალებით, რომელიც მოიცავს პირდაპირ ვიდეო ნაკადს. ეს არის სახის ამოცნობა, ფონის მოცილება, კიდეების სპეციალური ვიზუალური გაწევა და ბუნდოვანი ეფექტის გამოყენება ცოცხალ ვიდეო ნაკადზე. ამ პროექტების განსახორციელებლად ჩემი მთავარი მიზანი იყო OpenCV ინტერფეისით ფეხების დასველება, რადგან ვგეგმავ ღრმად ჩავუღრმავდე კომპიუტერულ ხედვას
მარაგები
- კომპიუტერი მუშაობს პითონზე
- გახსენით CV ბიბლიოთეკა, Numpy ბიბლიოთეკა, tkinter ბიბლიოთეკა, sys ბიბლიოთეკა
- კამერა კომპიუტერთან დასაკავშირებლად (თუ კომპიუტერი მას უკვე არ შეიცავს)
- პროგრამის პითონის ფაილი (შედის ამ ინსტრუქციაში)
- haarcascade xml ფაილი (შედის ამ ინსტრუქციაში)
ნაბიჯი 1: 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 ფუნქცია არ მუშაობს, არ ინერვიულოთ- ეს შეიძლება იყოს თქვენი კამერა!
ამ ფუნქციის გამოსაყენებლად, გადადგით კამერის ჩარჩოდან და დააჭირეთ ღილაკს "d", რომ გადაიღოთ ფონის სურათი. მნიშვნელოვანია, რომ არ იყოს მოძრავი საგნები იმ ფონზე, რომლის გადაღებაც გსურთ. შემდეგ ჩვენ შეგვიძლია უკან დავიხიოთ კამერის ჩარჩოში. თუ ფუნქცია მუშაობდა, მომხმარებელმა უნდა ნახოს საკუთარი თავი მხოლოდ ფუნქციის ვიდეო ნაკადზე. ნებისმიერი ხმაური/შავი ლაქები წინა სურათზე შეიძლება იყოს კამერის განათების კორექტირების შედეგი. სხვა ფონის გადასაღებად, დააჭირეთ "r" ღილაკს ხელახლა ინიციალიზაციისთვის, შემდეგ კვლავ დააჭირეთ "d"-ს.
ამ ფუნქციის ზოგიერთი ძირითადი მიდგომა არის "დროშის" ბულანის გამოყენება, რომელიც დგება მომენტში, როდესაც მომხმარებელი დააჭერს d ღილაკს. ეს აღბეჭდავს ფონს და გვაძლევს საშუალებას ამოვიღოთ ის ვიდეოდან, რომელიც გადადის ფუნქციით. ჩვენ ვცდილობთ შევინახოთ ფონის სურათი ref_img- ში, რათა განვასხვავოთ იგი წინა პლანზე, რომელიც იღებს ნებისმიერ მოძრავ ობიექტს. ჩვენ ვიყენებთ cv2.subtract () ფუნქციას, რომ გამოვაკლოთ წინა სურათის უკანა ფონი და პირიქით, შემდეგ კი გავაუქმოთ ნებისმიერი მცირედი განსხვავება ორ სურათში დაუყოვნებლივ. ფონი გაშავებულია.
Fgmask მზადდება ამ ორ სურათს შორის განსხვავების გამოყენებით და შემდეგ გამოიყენება ფუნქციების ვიდეო ნაკადზე OpenCV cv2.bitwise_and () ფუნქციის გამოყენებით.
ნაბიჯი 3: VideoEdges ფუნქცია
ეს ფუნქცია აბრუნებს ჩვენს პირდაპირ ვიდეო ნაკადს, მაგრამ ამოსაცნობი კიდეები თეთრი ხდება, დანარჩენი კი შავდება. ის, რაც განასხვავებს ამ ფუნქციას სხვა ფუნქციებისაგან, არის ჩვენი ორიგინალური ვიდეოს კონვერტაცია RBG ფორმატიდან HSV- ზე, რაც ნიშნავს ელფერი, გაჯერება და ცვალებადობა- სინათლისა და ფერის დამუშავების განსხვავებული მეთოდი ვიდეოდან. ამ მეთოდით, ჩვენ უფრო მარტივად შეგვიძლია გამოვყოთ ვიდეოში არსებული კონტურები ფილტრის გამოყენებით (წითელი ქვემოდან წითლამდე მაღალი).
Canny Edge Detection გამოიყენება გამოსახულების კიდეების გამოსავლენად. იგი იღებს ნაცრისფერი მასშტაბის სურათს შეყვანის სახით და იყენებს მრავალსაფეხურიან ალგორითმს.
ნაბიჯი 4: VideoBlur ფუნქცია
ეს ფუნქცია გამოიყენება ჩვენს ვიდეო ნაკადზე ბუნდოვანი ეფექტის დასამატებლად. მარტივი ფუნქცია იძახებს GaussianBlur cv2 ფუნქციას ჩვენს ჩარჩოზე. დამატებითი ინფორმაცია gaussianBlur ფუნქციის შესახებ შეგიძლიათ იხილოთ აქ:
opencv-python-tutroals.readthedocs.io/ka/l…
ნაბიჯი 5: გაუმჯობესება
ამ პროექტის ყველაზე მგრძნობიარე ფუნქციაა ფონის მოცილების ფუნქცია, რადგან ის მოითხოვს კამერის გამოყენებას, რომელსაც არ გააჩნია განათების რეგულირების ფუნქცია. OpenCV ბიბლიოთეკაში შეიძლება არსებობდეს ფუნქციების უკეთესი ნაკრები, რომელსაც შეუძლია შეაფასოს განათების ეს კორექტირება და შეუფერხებლად წაშალოს ფონი (მწვანე ეკრანის მსგავსი).
ჩვენ ასევე შეგვიძლია გამოვიყენოთ სახის ამოცნობის სხვა ფუნქციები, რომლებმაც შეიძლება წარმოქმნან ობიექტები უფრო მეტი ფუნქციონირებით, გარდა უბრალოდ (x, y) კოორდინატებისა. ალბათ სახის ამოცნობის პროგრამა, სახეების დამახსოვრების უნარით, არ იქნებოდა ძნელი განსახორციელებელი.
ბუნდოვანი ფუნქცია შეიძლება უფრო მორგებული იყოს მომხმარებლის მიერ ინტუიციური კონტროლის საშუალებით. მაგალითად, მომხმარებელს შეიძლება მოუნდეს ბუნდოვანი ეფექტის ინტენსივობის მორგება ან ჩარჩოში არსებული კონკრეტული არე დაბინდვის მიზნით.
გირჩევთ:
როგორ გავაკეთოთ RADAR არდუინოს გამოყენებით სამეცნიერო პროექტისათვის არდუინოს საუკეთესო პროექტები: 5 ნაბიჯი
როგორ გავაკეთოთ RADAR არდუინოს გამოყენებით სამეცნიერო პროექტისათვის საუკეთესო Arduino პროექტები: გამარჯობა მეგობრებო, ამ სასწავლო ინსტრუქციაში მე გაჩვენებთ თუ როგორ უნდა გააკეთოთ arduino nano– ს გამოყენებით აშენებული საოცარი სარადარო სისტემა
როგორ შემოვიტანოთ Java პროექტები დამწყებთათვის Eclipse– ში: 11 ნაბიჯი
როგორ შემოვიტანოთ ჯავა პროექტები დამწყებთათვის Eclipse– ში: შესავალი ქვემოთ მოცემულ ინსტრუქციებში მოცემულია ეტაპობრივად მითითებები კომპიუტერული პროგრამული უზრუნველყოფის Eclipse– ზე Java პროექტების დაყენების შესახებ. Java პროექტები შეიცავს ყველა კოდს, ინტერფეისს და ფაილებს, რომლებიც აუცილებელია Java პროგრამის შესაქმნელად. ეს პროექტები არის
უკეთესი პროექტები PCB– ის გამოყენებით: 6 ნაბიჯი
უკეთესი პროექტები PCB– ის გამოყენებით: თუ თქვენ გაატარეთ დრო ელექტრონიკის პროექტებთან მუშაობაში, მაშინ იცით რამდენად სახალისო და ამაღელვებელი შეიძლება იყოს. არაფერია უფრო ამაღელვებელი, ვიდრე იმის დანახვა, რომ შენი წრე ცოცხლდება თვალწინ. ეს კიდევ უფრო ამაღელვებელი ხდება, როდესაც თქვენი პროექტი გადაიქცევა
ელექტრონული პროექტები დამწყებთათვის: 14 ნაბიჯი (სურათებით)
ელექტრონული პროექტები დამწყებთათვის: თუ გსურთ ელექტრონიკაში ჩართვა და გჭირდებათ სწავლის ადგილი, ეს თქვენთვისაა. EBay და Aliexpress– ზე არის ძალიან იაფი ნაკრები, რომელთა შეძენაც შეგიძლიათ 2 ან 3 დოლარად, რაც კომპონენტების იდენტიფიკაციის გამოცდილებას მოგცემთ
16x16 RGB LED პანელი Arduino პროექტები: 5 ნაბიჯი (სურათებით)
16x16 RGB LED პანელი Arduino პროექტები: გამარჯობა ყველას, მე ვაქვეყნებ ამ პროექტს, რადგან მსურს ყველას ჰქონდეს მარტივი ადგილი, რომ მოვიდეს სათამაშოდ ამ ფანტასტიკური 16x16 RGB LED პანელებით. მე მივიღე იდეები სხვა პროექტებიდან და შევიცვალე ისინი ამ პროექტისთვის. ეს გაძლევთ