Mục lục:
- Quân nhu
- Bước 1: Nhập thư viện
- Bước 2: Tạo thanh theo dõi
- Bước 3: Tạo thanh theo dõi cho Hue, Saturation và Value
- Bước 4: Cách đọc và thay đổi kích thước hình ảnh
- Bước 5: Đọc các giá trị của thanh theo dõi để áp dụng nó vào hình ảnh
- Bước 6: Hiển thị hình ảnh và thiết lập giới hạn trên và dưới
- Bước 7: Bây giờ là bước cuối cùng
- Bước 8: Kết quả cuối cùng
Video: Phát hiện màu trong Python bằng OpenCV: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Xin chào! Hướng dẫn này được sử dụng để hướng dẫn cách trích xuất một màu cụ thể từ một hình ảnh trong python bằng thư viện openCV. Nếu bạn chưa quen với kỹ thuật này thì đừng lo lắng, ở phần cuối của hướng dẫn này, bạn sẽ có thể lập trình chương trình phát hiện màu sắc của riêng mình.
Sau đây là các chức năng hoặc chúng ta có thể nói các kỹ thuật mà bạn sẽ học, 1. Cách đọc hình ảnh
2. Cách tạo thanh theo dõi
3. Cách điều chỉnh giá trị của Hue, Saturation và giá trị của hình ảnh bằng cách sử dụng các thanh theo dõi
4. Và sau đó sẽ có kết quả cuối cùng của bạn
Bạn có thể xem video đầu ra mà tôi đính kèm bên dưới.
Vậy hãy bắt đầu
Quân nhu
- Python 3
- thư viện openCV
- thư viện numpy
Bước 1: Nhập thư viện
Hình ảnh có màu vàng ferrari như được hiển thị và chúng tôi sẽ lập trình để chỉ trích xuất màu vàng từ hình ảnh đó
Bước đầu tiên sẽ là nhập các thư viện của chúng tôi
1. Bao gồm thư viện openCV. Nó được gọi là cv2 trong python
2. Bao gồm thư viện numpy là np. "As" cho phép chúng ta numpy là np nên không cần phải viết numpy lặp đi lặp lại
Bước 2: Tạo thanh theo dõi
Thanh theo dõi được tạo để điều chỉnh giá trị của Hue, Saturation và Value trong hình ảnh.
cv2.nameWindow ("TrackBars") Dòng mã này được sử dụng để tạo một cửa sổ xuất mới và tên của cửa sổ được đặt là TrackBars (Bạn có thể đặt bất kỳ tên nào bạn muốn)
cv2.resizeWindow ("TrackBars", 600, 250) Chức năng này được sử dụng để thay đổi kích thước cửa sổ. "TrackBars" là cửa sổ bạn muốn thay đổi kích thước vì tôi muốn thay đổi kích thước cửa sổ TrackBars, tôi đã viết tên đó. Theo sau là hai số nguyên. Hai số nguyên đó là chiều rộng và chiều cao. Bạn có thể thử với hai con số đó để thay đổi kích thước
Bước 3: Tạo thanh theo dõi cho Hue, Saturation và Value
Bây giờ chúng ta sẽ tạo tổng cộng 6 thanh TrackBars cho Hue, Saturation và value. Mỗi cái sẽ có hai, tức là 1 cho tối thiểu và 1 cho tối đa. Chúng tôi sẽ sử dụng chức năng createTrackbar của openCV. Đầu tiên chúng ta sẽ xem cú pháp của hàm này.
cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Điều này có thể khó hiểu nhưng đừng lo lắng, chúng tôi sẽ đi qua từng bước. Hãy nhớ một điều rằng trong openCV giá trị của màu sắc là 179, độ bão hòa là 255 và giá trị là 255
1. Tạo TrackBar cho hue min:
cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, trống)
Trong Hue min này là tên trackbar, TrackBars là cửa sổ chính, 0 là vị trí mà thanh trượt của chúng ta sẽ ở trên và 179 là phạm vi có nghĩa là silder sẽ di chuyển từ 0-179
2. Tạo TrackBar cho màu sắc tối đa:
cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, trống)
Trong Hue max này là tên trackbar, TrackBars là cửa sổ chính, 179 là vị trí mà thanh trượt của chúng ta sẽ ở và 179 là phạm vi tối đa có nghĩa là silder sẽ di chuyển từ 179-0
3. Tương tự lặp lại các bước cho sat min, sat max, val min và val max như trong hình
Hình ảnh có nền trắng là hình ảnh đầu ra. Đây là cách các thanh theo dõi của bạn sẽ trông như thế nào
Bước 4: Cách đọc và thay đổi kích thước hình ảnh
cv2.imread () cho phép bạn đọc hình ảnh. Một điều quan trọng mà bạn cần lưu ý là vị trí của hình ảnh của bạn phải nằm trong cùng một thư mục nơi chương trình được lưu. Chúng tôi sẽ đưa vào vòng lặp while vì nó sẽ chạy cho đến khi đọc hình ảnh hoặc chúng tôi có thể nói cho đến khi điều kiện là đúng
img = cv2.imread ("ferrari.jpg")
- Trong phần này, tôi đã tạo một tên biến "img" mà tôi đang lưu trữ hình ảnh
- Bên trong cv2.imread viết tên của hình ảnh với phần mở rộng của nó bên trong dấu ngoặc kép
Để thay đổi kích thước hình ảnh, chúng ta sẽ sử dụng hàm cv2.resize. Phần này là tùy chọn, nếu bạn muốn thay đổi kích thước thì có thể sử dụng chức năng này
Bên trong cv2.resize trước tiên hãy viết tên biến mà hình ảnh được lưu trữ, sau đó là chiều rộng và chiều cao của nó
Bước 5: Đọc các giá trị của thanh theo dõi để áp dụng nó vào hình ảnh
Được rồi, bây giờ chúng ta sẽ đọc các giá trị của thanh trackbar để chúng ta có thể áp dụng nó vào hình ảnh của mình. Chúng tôi sẽ lấy các giá trị bằng cách sử dụng hàm cv2.getTrackbarPos ().
Hãy bắt đầu với phần đó…
h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")
Trong câu lệnh trên, tôi đang tạo một tên biến h_min trong đó tôi sẽ lưu giá trị của Hue min. Vì vậy, bên trong cv2.getTrackbarPos, đối số thứ nhất sẽ là "Hue min" vì tôi muốn các giá trị của hue min (Cách viết phải giống hệt với hàm createTrackbar) và đối số thứ 2 sẽ là tên của cửa sổ trackbar mà nó thuộc về.
- Lặp lại quá trình tương tự cho h_max và phần còn lại của các hàm như được hiển thị trong hình trên và sau đó in tất cả các giá trị bằng print ()
- Đầu ra được hiển thị trong hình ảnh thứ hai. Nó đang in các giá trị h_min, h_max, s_min, s_max, v_min, s_max
Bước 6: Hiển thị hình ảnh và thiết lập giới hạn trên và dưới
Bây giờ chúng ta có giá trị tối thiểu và tối đa của màu sắc, độ bão hòa và giá trị, chúng ta sẽ sử dụng giá trị này để lọc ra hình ảnh để chúng ta có thể xuất ra màu cụ thể của một hình ảnh.
Chúng tôi sẽ tạo một mặt nạ cho điều này bằng cách sử dụng hàm cv2.inRange. Và trước đó, chúng tôi sẽ đặt giới hạn trên và giới hạn dưới của màu sắc, độ bão hòa và giá trị
Vì vậy, hãy tạo một tên biến "thấp hơn" và sử dụng hàm mảng numpy đặt phạm vi min cho cả 3 như sau
low = np.array ([h_min, s_min, v_min])
Lặp lại bước tương tự cho phần trên
upper = np.array ([h_max, s_max, v_max])
Bây giờ chúng ta sẽ tạo một mặt nạ như sau
mask = cv2.inRange (thay đổi kích thước, thấp hơn, trên) Bên trong cv2.inRang, đối số thứ nhất sẽ là biến trong đó hình ảnh cuối cùng của tôi được lưu trữ, đối số thứ 2 sẽ là giới hạn dưới và đối số thứ 3 sẽ là giới hạn trên.
Bây giờ chúng ta sẽ hiển thị hình ảnh chính và mặt nạ. Để hiển thị chúng ta sẽ sử dụng hàm cv2.imshow ()
cv2.imshow ("img", thay đổi kích thước) Đây là để hiển thị hình ảnh chính. Đối số thứ nhất là tên của cửa sổ mà bạn có thể đặt bất kỳ tên nào bạn muốn và đối số thứ hai là biến trong đó hình ảnh chính của tôi được lưu trữ mà bạn muốn hiển thị.
Tương tự lặp lại các bước cho mặt nạ
cv2.imshow ("Đầu ra", mặt nạ)
Bước 7: Bây giờ là bước cuối cùng
Trong bước cuối cùng này, chúng tôi sẽ trích xuất màu của xe và hiển thị.
Tôi đã tạo một kết quả tên biến. Một lần nữa, bạn có thể đặt bất kỳ tên nào bạn muốn. Vì vậy, chúng tôi sẽ sử dụng hàm cv2.bitwise_and (), trong đó chúng tôi sẽ thêm vào các hình ảnh cùng nhau và tạo một hình ảnh mới. Và bất cứ nơi nào có các pixel trong cả hai hình ảnh, nó sẽ có giá trị là có hoặc "1".
result = cv2.bitwise_and (thay đổi kích thước, thay đổi kích thước, mặt nạ = mặt nạ)
- Trong đối số thứ nhất này sẽ là hình ảnh của chúng ta
- Đối số thứ 2 cũng sẽ là hình ảnh ban đầu của chúng tôi nhưng theo sau là mặt nạ được áp dụng mà chúng tôi đã tạo trước đó
- Và cuối cùng chỉ cần hiển thị kết quả bằng chức năng imshow
Chỉ cần sao chép dán bước cuối cùng này chỉ là sự chậm trễ và bạn có thể thoát khỏi cửa sổ đầu ra bằng cách nhấn "a" trên bàn phím
Bước 8: Kết quả cuối cùng
Đề xuất:
Cách sử dụng tính năng phát hiện màu TCS3200 với SkiiiD: 9 bước
Cách sử dụng Detect Color TCS3200 với SkiiiD: Hướng dẫn phát triển Detect Color TCS3200 với skiiiD
Máy sơn phát hiện màu: 4 bước
Máy sơn phát hiện màu: Máy sơn phát hiện màu sao chép các màu xung quanh bạn và cho phép bạn vẽ với chúng. Nếu bạn có màu sơn cơ bản, bạn có thể sử dụng cảm biến màu RGB để cảm nhận màu bạn muốn và trộn nó ra. Nhưng hãy nhớ, sử dụng đối tượng màu sáng
Phát hiện màu đơn giản bằng OpenCV: 6 bước
Nhận diện màu đơn giản bằng OpenCV: Xin chào! Hôm nay tôi sẽ trình bày một phương pháp đơn giản để phát hiện màu từ video trực tiếp bằng OpenCV và python. Về cơ bản tôi sẽ chỉ kiểm tra màu cần thiết có trong khung nền hay không và sử dụng mô-đun OpenCV, tôi sẽ che vùng đó và
Trồng nhiều rau diếp trong ít không gian hơn hoặc Trồng rau diếp trong không gian, (nhiều hơn hoặc ít hơn).: 10 bước
Trồng nhiều rau diếp hơn trong ít không gian hơn hoặc … Trồng rau diếp trong không gian, (Nhiều hơn hoặc ít hơn): Đây là bài dự thi chuyên nghiệp cho Cuộc thi trồng trọt ngoài Trái đất, được gửi thông qua Huấn luyện viên. Tôi không thể vui mừng hơn khi được thiết kế cho sản xuất cây trồng vũ trụ và đăng Tài liệu hướng dẫn đầu tiên của mình. Để bắt đầu, cuộc thi yêu cầu chúng tôi
Cách phát hiện bệnh hại cây trồng bằng máy học: 6 bước
Cách phát hiện bệnh cây bằng máy học: Quá trình phát hiện và nhận biết cây bị bệnh luôn là một quá trình thủ công và tẻ nhạt, đòi hỏi con người phải kiểm tra bằng mắt thường trên cơ thể thực vật, điều này có thể dẫn đến chẩn đoán không chính xác. Nó cũng đã được dự đoán rằng như toàn cầu w