Mục lục:
- Bước 1: Tệp tiêu đề
- Bước 2: Quay video
- Bước 3: Chụp khung và xác định màu
- Bước 4: Tạo mặt nạ và giải nén
- Bước 5: Cuối cùng là Hiển thị
- Bước 6: Demo
Video: Phát hiện màu đơn giản bằng OpenCV: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Chào! Hôm nay tôi sẽ giới thiệu 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 các mô-đun OpenCV, tôi sẽ che vùng đó và đồng thời hiển thị khung.
Bước 1: Tệp tiêu đề
Bây giờ ở đây tôi đã sử dụng hai tệp tiêu đề là cv2 và NumPy. Về cơ bản cv2 là thư viện OpenCV tải tất cả các tệp c ++ quan trọng trong khi sử dụng các lệnh trong mã (nó chứa tất cả các định nghĩa).
Và Numpy là một thư viện python cần thiết để lưu trữ một mảng đa chiều. Chúng tôi sẽ sử dụng để lưu trữ tọa độ dải màu của chúng tôi.
Và numpy như np về cơ bản giúp mã của chúng ta rút ngắn một chút bằng cách sử dụng np mọi lúc thay vì numpy.
Bước 2: Quay video
Điều này khá đơn giản khi sử dụng python. Ở đây chúng ta chỉ cần bật trình ghi video để nó có thể bắt đầu quay các khung hình.
Bây giờ giá trị bên trong VideoCapture cho biết máy ảnh, trong trường hợp của tôi, máy ảnh được kết nối với máy tính xách tay của tôi, vì vậy 0.
Bạn có thể thực hiện tương tự với 1 cho camera phụ, v.v. VideoCapture tạo đối tượng cho nó.
Bước 3: Chụp khung và xác định màu
Bây giờ ở đây chúng ta phải làm gì đó để chúng ta có thể chụp được khung hình tức thì của video, điều này sẽ giúp chúng ta trích xuất hình ảnh và chúng ta có thể làm việc trên đó theo yêu cầu.
Vòng lặp "while" sẽ giúp chúng tôi chạy vòng lặp đến thời gian yêu cầu của chúng tôi. Bây giờ "_, frame = cap.read ()" được sử dụng để kiểm tra tính hợp lệ của Frame được chụp và lưu trữ nó. "cap.read () là một biến boolean và trả về true nếu khung được đọc chính xác và nếu bạn không nhận được khung nào, nó sẽ không hiển thị bất kỳ lỗi nào, bạn chỉ nhận được Không có.
Bây giờ dòng 11 và dòng 12 về cơ bản xác định phạm vi màu mà chúng ta cần phát hiện. Đối với điều này, tôi đã sử dụng màu xanh lam.
Bạn có thể tiếp tục với bất kỳ màu nào mà bạn chỉ cần nhập các giá trị BGR cho màu cụ thể đó. Tốt hơn nên xác định hai mảng bằng cách sử dụng mảng không có hạt vì việc phát hiện một màu cụ thể trong thế giới thực sẽ không phục vụ mục đích của chúng ta thay vì chúng ta sẽ xác định một dải màu xanh lam để nó phát hiện trong phạm vi đó.
Đối với điều này, tôi đã xác định hai biến lưu trữ giá trị BGR thấp hơn và giá trị BGR cao hơn.
Bước 4: Tạo mặt nạ và giải nén
Bây giờ ở đây có nhiệm vụ chính là che khung và trích xuất màu của khung. Tôi đã sử dụng các lệnh được xác định trước có trong thư viện trong OpenCV để thực hiện việc tạo mặt nạ. Về cơ bản, tạo mặt nạ là quá trình loại bỏ một số phần của khung hình, tức là chúng ta sẽ loại bỏ các pixel có giá trị BGR màu không nằm trong dải màu đã xác định và điều này được thực hiện bởi cv2.inRange. Sau đó, chúng tôi áp dụng dải màu cho hình ảnh được che tùy thuộc vào giá trị pixel và đối với điều này, chúng tôi sẽ sử dụng cv2.bitwise_and, Nó sẽ chỉ cần gán màu cho vùng được che tùy thuộc vào giá trị mặt nạ và dải màu.
Liên kết cho cv2. bitwise_and:
Bước 5: Cuối cùng là Hiển thị
Ở đây tôi đã sử dụng cv2.imshow () cơ bản để hiển thị cho mỗi khung dưới dạng hình ảnh. Vì tôi có dữ liệu khung được lưu trữ trong các biến nên tôi có thể truy xuất chúng trong imshow (). Ở đây tôi đã hiển thị tất cả ba khung, gốc, mặt nạ và màu.
Bây giờ chúng ta phải thoát khỏi vòng lặp while. Đối với điều này, chúng ta chỉ có thể triển khai cv2.wait. Key (). Về cơ bản, nó cho biết thời gian chờ trước khi phản hồi. Vì vậy, nếu bạn vượt qua 0, nó sẽ đợi vô hạn và 0xFF cho biết kiến trúc là 64bit. "ord ()" chỉ định ký tự mà khi được nhấn sẽ thực hiện lệnh break trong khối if và nó sẽ thoát ra khỏi vòng lặp.
Sau đó cap.release () đóng trình ghi video và cv2.destroyAllWindows () đóng tất cả các cửa sổ đã mở.
Nếu bạn có bất kỳ vấn đề, xin vui lòng cho tôi biết.
Liên kết đến mã nguồn:
Đề xuất:
Phát hiện màu trong Python bằng OpenCV: 8 bước
Phát hiện màu trong Python bằng OpenCV: 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 màu của riêng mình
Máy dò điện tĩnh đơn giản nhưng mạnh mẽ cũng có thể phát hiện "ma": 10 bước
Máy dò điện tĩnh đơn giản nhưng mạnh mẽ cũng có thể phát hiện "ma": Xin chào, đây là hướng dẫn đầu tiên của tôi, vì vậy vui lòng cho tôi biết về những sai lầm tôi đã làm trong hướng dẫn này. Trong hướng dẫn này, tôi sẽ tạo một mạch có thể phát hiện tĩnh điện. Một trong những người tạo ra nó đã tuyên bố rằng anh ta đã phát hiện ra & quot
Tự làm an ninh gia đình - Cách phát hiện chuyển động đơn giản - Phiên bản mới: 6 bước
Tự làm an ninh gia đình - Cách phát hiện chuyển động đơn giản | Phiên bản mới: Trong dự án này, tôi sẽ hướng dẫn bạn cách tạo báo động thông báo chuyển động an ninh tự làm tại nhà với chi phí thấp! Xem phiên bản cũ: Cách tạo hệ thống bảo mật WiFi $ 10 tại nhà
Xử lý đơn giản Uldar (Phát hiện và đo bằng sóng siêu âm): 3 bước
Xử lý đơn giản Uldar (Phát hiện và đo khoảng cách bằng sóng siêu âm): Đây là một dự án đơn giản sử dụng Arduino UNO và Xử lý để tạo ra một lidar đơn giản.Lidar (còn được gọi là LIDAR, LiDAR và LADAR) là một phương pháp khảo sát đo khoảng cách đến mục tiêu bằng cách chiếu sáng mục tiêu bằng ánh sáng laser xung và đo
Một máy phát hiện tiệm cận rất đơn giản: 9 bước
Một máy dò tiệm cận rất đơn giản: Những người thích đồ tiện ích, người lái xe mô hình, người máy hoặc người nuôi mèo sẽ thích tính linh hoạt của máy dò tiệm cận hồng ngoại Sharp IS471. Nó có kích thước bằng một bóng bán dẫn, hoạt động trên phạm vi 4-16 volt và có thể phát hiện các vật thể cách xa khoảng 4-9 inch bằng