Სარჩევი:

ფერის გამოვლენა პითონში OpenCV გამოყენებით: 8 ნაბიჯი
ფერის გამოვლენა პითონში OpenCV გამოყენებით: 8 ნაბიჯი

ვიდეო: ფერის გამოვლენა პითონში OpenCV გამოყენებით: 8 ნაბიჯი

ვიდეო: ფერის გამოვლენა პითონში OpenCV გამოყენებით: 8 ნაბიჯი
ვიდეო: Invasive Python Skin! New Colors!! 2024, ივლისი
Anonim
Image
Image

გამარჯობა! ეს ინსტრუქცია გამოიყენება იმის გასარკევად, თუ როგორ ამოიღოთ კონკრეტული ფერი პითონში გამოსახულიდან openCV ბიბლიოთეკის გამოყენებით. თუ თქვენ ახალი ხართ ამ ტექნიკით, მაშინ არ ინერვიულოთ, ამ სახელმძღვანელოს ბოლოს თქვენ შეძლებთ თქვენი საკუთარი ფერის გამოვლენის პროგრამის დაპროგრამებას.

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

2. როგორ შევქმნათ Track Bars

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

4. და შემდეგ იქნება თქვენი საბოლოო გამომავალი

თქვენ შეგიძლიათ ნახოთ გამომავალი ვიდეო, რომელიც მე დავურთე ქვემოთ.

მოდით დავიწყოთ

მარაგები

  • პითონი 3
  • openCV ბიბლიოთეკა
  • დაბუჟებული ბიბლიოთეკა

ნაბიჯი 1: ბიბლიოთეკების იმპორტი

ბიბლიოთეკების იმპორტი
ბიბლიოთეკების იმპორტი

სურათი არის ყვითელი ფერარის, როგორც ნაჩვენებია და ჩვენ დავგეგმავთ ამ ყვითელიდან მხოლოდ ყვითელი ფერის ამოღებას

პირველი ნაბიჯი იქნება ჩვენი ბიბლიოთეკების იმპორტი

1. მათ შორის openCV ბიბლიოთეკა. მას პითონში cv2 ეწოდება

2. numpy ბიბლიოთეკის ჩათვლით np. "As" მოგვცემს საშუალებას, რომ ჩვენ numpy როგორც np ასე რომ არ გვჭირდება numpy წერა ისევ და ისევ

ნაბიჯი 2: საჩვენებელი ზოლების შექმნა

ბილიკების შექმნა
ბილიკების შექმნა

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

cv2.namedWindow ("TrackBars") კოდის ეს ხაზი გამოიყენება ახალი გამომავალი ფანჯრის შესაქმნელად და ფანჯრის სახელი მოცემულია TrackBars- ის სახით (შეგიძლიათ მიუთითოთ ნებისმიერი სახელი)

cv2.resizeWindow ("TrackBars", 600, 250) ეს ფუნქცია გამოიყენება ფანჯრის ზომის შესაცვლელად. "TrackBars" არის რომელი ფანჯრისთვის გსურთ ზომის შეცვლა რადგან მე მინდოდა TrackBars ფანჯრის ზომის შეცვლა მე დავწერე ეს სახელი. მოყვება ორი მთელი რიცხვი. ეს ორი მთელი რიცხვია სიგანე და სიმაღლე. თქვენ შეგიძლიათ ითამაშოთ ამ ორი ნომრით ზომის შესაცვლელად

ნაბიჯი 3: შექმენით TrackBars ელფერი, გაჯერება და მნიშვნელობა

შექმნა TrackBars for ფერი, გაჯერება და მნიშვნელობა
შექმნა TrackBars for ფერი, გაჯერება და მნიშვნელობა
TrackBars- ის შექმნა შეფერილობის, გაჯერების და ღირებულებისათვის
TrackBars- ის შექმნა შეფერილობის, გაჯერების და ღირებულებისათვის

ახლა ჩვენ შევქმნით სულ 6 TrackBars შეფერილობის, გაჯერების და ღირებულებისათვის. თითოეულს ექნება ორი ანუ 1 მინიმალური და 1 მაქსიმუმი. ჩვენ ვიყენებთ openCV- ს createTrackbar ფუნქციას. პირველი ჩვენ ვნახავთ ამ ფუნქციის სინტაქსს.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). ეს შეიძლება დამაბნეველი იყოს, მაგრამ არ ინერვიულოთ, ჩვენ თითოეულ ნაბიჯს გადავდგამთ. დაიმახსოვრე ერთი რამ, რომ ღია CV- ში შეფერილობის მნიშვნელობაა 179, გაჯერება 255 და მნიშვნელობა 255

1. შექმნა TrackBar hue min:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, ცარიელი)

ამ Hue min არის trackbar– ის სახელი, TrackBars არის მთავარი ფანჯარა, 0 არის პოზიცია, რომელზეც იქნება ჩვენი სლაიდერი და 179 არის დიაპაზონი, რაც ნიშნავს, რომ silder გადავა 0-179 – დან

2. შექმენით TrackBar hue max– ისთვის:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, ცარიელი)

ამ Hue max- ში არის ბილიკის სახელი, TrackBars არის მთავარი ფანჯარა, 179 არის პოზიცია, რომელზეც იქნება ჩვენი სლაიდერი და 179 არის მაქსიმალური დიაპაზონი, რაც ნიშნავს, რომ სილდერი გადავა 179-0-დან

3. ანალოგიურად გაიმეორეთ ნაბიჯები sat min, sat max, val min და val max როგორც ნაჩვენებია სურათზე

თეთრი ფონის გამოსახულება არის გამომავალი სურათი. ასე გამოიყურება თქვენი ბილიკების ზოლები

ნაბიჯი 4: როგორ წავიკითხოთ და შეცვალოთ სურათი

როგორ წავიკითხოთ და შეცვალოთ სურათი
როგორ წავიკითხოთ და შეცვალოთ სურათი

cv2.imread () საშუალებას გაძლევთ წაიკითხოთ სურათი. ერთი მნიშვნელოვანი აზრი უნდა გახსოვდეთ, რომ თქვენი სურათის მდებარეობა უნდა იყოს იმავე საქაღალდეში, სადაც პროგრამა ინახება. ჩვენ ჩავატარებთ while მარყუჟს, რადგან ის უნდა იმოქმედოს მანამ, სანამ არ კითხულობს სურათს ან შეგვიძლია ვთქვათ, სანამ მდგომარეობა არ არის ჭეშმარიტი

img = cv2.imread ("ferrari.jpg")

  • ამაში მე შევქმენი ცვლადი სახელი "img", რომელშიც ვინახავ სურათს
  • Cv2.imread- ში ჩაწერეთ სურათის სახელი მისი გაფართოებით ორმაგი ციტირებით

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

Cv2.resize– ის შიგნით ჯერ ჩაწერეთ ცვლადის სახელი, რომელშიც ინახება სურათი და შემდეგ მისი სიგანე და სიმაღლე

ნაბიჯი 5: წაკითხვის ბილიკი ღირებულებების გამოიყენოს იგი გამოსახულება

წაკითხვის ბილიკი ღირებულებების გამოიყენოს იგი გამოსახულება
წაკითხვის ბილიკი ღირებულებების გამოიყენოს იგი გამოსახულება
წაკითხვის ბილიკი ღირებულებების გამოიყენოს იგი გამოსახულება
წაკითხვის ბილიკი ღირებულებების გამოიყენოს იგი გამოსახულება

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

დავიწყოთ ამ ნაწილით …

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

ზემოაღნიშნულ განცხადებაში მე ვქმნი ცვლადის სახელს h_min, რომელშიც შევინახავ Hue min- ის მნიშვნელობას. Cv2.getTrackbarPos პირველი არგუმენტი იქნება "Hue min", რადგან მე მინდა hue min მნიშვნელობები (მართლწერა ზუსტად იგივე უნდა იყოს, როგორც ეს არის createTrackbar ფუნქცია) და მე -2 არგუმენტი იქნება trackbar ფანჯრის სახელი, რომელსაც ის ეკუთვნის.

  • გაიმეორეთ იგივე პროცესი h_max და დანარჩენი ფუნქციები, როგორც ეს მოცემულია ზემოთ სურათზე და შემდეგ დაბეჭდეთ ყველა მნიშვნელობა print () - ის გამოყენებით
  • გამომავალი ნაჩვენებია მეორე სურათზე. ის დაბეჭდავს h_min, h_max, s_min, s_max, v_min, s_max მნიშვნელობებს

ნაბიჯი 6: გამოსახულების ჩვენება და ზედა და ქვედა ლიმიტის დაყენება

გამოსახულების ჩვენება და ზედა და ქვედა ლიმიტის დაყენება
გამოსახულების ჩვენება და ზედა და ქვედა ლიმიტის დაყენება

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

ამისათვის ჩვენ შევქმნით ნიღბს cv2.inRange ფუნქციის გამოყენებით. მანამდე ჩვენ დავაყენებთ შეფერილობის, გაჯერების და მნიშვნელობის ზედა და ქვედა ზღვარს

ასე რომ, შექმენით ცვლადი სახელი "ქვედა" და numpy მასივის ფუნქციის გამოყენებით დააყენეთ დიაპაზონი min სამივესთვის შემდეგნაირად

ქვედა = np. მასივი ([h_min, s_min, v_min])

გაიმეორეთ იგივე ნაბიჯი ზედა ნაწილში

ზედა = np.array ([h_max, s_max, v_max])

ახლა ჩვენ შევქმნით ნიღაბს შემდეგნაირად

mask = cv2.inRange (ზომის შეცვლა, ქვედა, ზედა) cv2.inRang– ში პირველი არგუმენტი იქნება ცვლადი, რომელშიც ინახება ჩემი საბოლოო სურათი, მეორე არგუმენტი იქნება ქვედა ზღვარი და მე –3 არგუმენტი იქნება ზედა ზღვარი.

ახლა ჩვენ ვაპირებთ აჩვენოთ ძირითადი სურათი და ნიღაბი. ჩვენებისათვის ჩვენ გამოვიყენებთ cv2.imshow () ფუნქციას

cv2.imshow ("img", ზომის შეცვლა) ეს არის მთავარი გამოსახულების ჩვენება. პირველი არგუმენტი არის იმ ფანჯრის სახელი, რომლის სახელიც შეგიძლიათ მიუთითოთ, ხოლო მეორე არგუმენტი არის ცვლადი, რომელშიც ინახება ჩემი მთავარი სურათი, რომლის ჩვენებაც გსურთ.

ანალოგიურად გაიმეორეთ ნაბიჯები ნიღბის გასაკეთებლად

cv2.imshow ("გამომავალი", ნიღაბი)

ნაბიჯი 7: ახლა საბოლოო ნაბიჯი

ახლა კი საბოლოო ნაბიჯი
ახლა კი საბოლოო ნაბიჯი

ამ ბოლო ეტაპზე ჩვენ გამოვყოფთ მანქანის ფერს და ჩვენებას.

მე შევქმენი ცვლადის სახელის შედეგი. ისევ შეგიძლია ნებისმიერი სახელი დაარქვა. ჩვენ ვიყენებთ cv2.bitwise_and () ფუნქციას, რომელშიც ჩვენ ერთად დავამატებთ სურათებს და შევქმნით ახალ სურათს. და სადაც არ უნდა იყოს ორივე გამოსახულების პიქსელი, ის მიიღებს როგორც დიახ ან "1".

შედეგი = cv2.bitwise_and (ზომის შეცვლა, ზომის შეცვლა, ნიღაბი = ნიღაბი)

  • ამაში პირველი არგუმენტი იქნება ჩვენი სურათი
  • მე –2 არგუმენტი იქნება ჩვენი ორიგინალური სურათი, რასაც მოჰყვება გამოყენებული ნიღაბი, რომელიც ჩვენ ადრე შევქმენით
  • და ბოლოს უბრალოდ აჩვენე შედეგი imshow ფუნქციის გამოყენებით

უბრალოდ დააკოპირეთ და ჩასვით ეს ბოლო ნაბიჯი, ეს მხოლოდ შეფერხებაა და შეგიძლიათ გამოხვიდეთ გამომავალი ფანჯრიდან კლავიატურაზე "a" დაჭერით

ნაბიჯი 8: საბოლოო შედეგები

გირჩევთ: