Mục lục:
- Bước 1: Vẽ hình chữ nhật trên đối tượng được nhận dạng
- Bước 2: Theo dõi đường dẫn mà đối tượng đã di chuyển
- Bước 3: Tích hợp cả hai mã
Video: Theo dõi đối tượng Opencv: 3 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Phát hiện đối tượng chuyển động là một kỹ thuật được sử dụng trong xử lý hình ảnh và thị giác máy tính. Nhiều khung hình liên tiếp từ một video được so sánh bằng nhiều phương pháp khác nhau để xác định xem có phát hiện thấy bất kỳ đối tượng chuyển động nào hay không.
Tính năng phát hiện đối tượng chuyển động đã được sử dụng cho nhiều ứng dụng như giám sát video, nhận dạng hoạt động, giám sát tình trạng đường xá, an toàn sân bay, giám sát bảo vệ dọc biên giới biển, v.v.
Phát hiện đối tượng chuyển động là nhận biết chuyển động vật lý của một đối tượng tại một địa điểm hoặc khu vực nhất định. [2] Bằng cách thực hiện phân đoạn giữa các đối tượng chuyển động và vùng hoặc vùng đứng yên, chuyển động của các đối tượng chuyển động có thể được theo dõi và do đó có thể được phân tích sau đó. Để đạt được điều này, hãy coi video là một cấu trúc được xây dựng dựa trên các khung hình đơn lẻ, phát hiện đối tượng chuyển động là để tìm (các) mục tiêu chuyển động phía trước, trong mỗi khung hình video hoặc chỉ khi mục tiêu chuyển động xuất hiện lần đầu tiên trong video.
Tôi sẽ sử dụng kết hợp Opnecv và Python để phát hiện và theo dõi các đối tượng dựa trên màu sắc
Bước 1: Vẽ hình chữ nhật trên đối tượng được nhận dạng
nếu máy tính của bạn không có python hoặc opencv, vui lòng làm theo điều này dưới đây insstructables
đây là mã python:
nhập cv2import numpy dưới dạng np
cap = cv2. VideoCapture (0)
trong khi Đúng:
_, frame = cap.read () hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV)
low_yellow = np.array ([20, 110, 110])
upper_yellow = np.array ([40, 255, 255])
yellow_mask = cv2.inRange (hsv, low_yellow, upper_yellow)
(_, contours, _) = cv2.findContours (yellow_mask, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
cho đường viền trong đường viền:
area = cv2.contourArea (contour)
nếu (diện tích> 800):
x, y, w, h = cv2.bidingRect (contour) frame = cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 10)
cv2.imshow ("theo dõi", khung)
k = cv2.waitKey (5) & 0XFF
nếu k == 27: break
cv2.destroyAllWindows ()
cap.release ()
Bước 2: Theo dõi đường dẫn mà đối tượng đã di chuyển
để theo dõi đường dẫn:
đối với tôi trong phạm vi (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (frame, center_points [i - 1], center_points , (b, g, r), 4)
Bước 3: Tích hợp cả hai mã
tôi sẽ tích hợp cả mã
nhập cv2import numpy dưới dạng np nhập ngẫu nhiên từ các bộ sưu tập import deque
cap = cv2. VideoCapture (1)
# Để theo dõi tất cả các điểm mà đối tượng đã truy cập center_points = deque ()
trong khi Đúng:
# Đọc và lật khung _, frame = cap.read () frame = cv2.flip (frame, 1)
# Làm mờ khung hình một chút
mờ_frame = cv2. GaussianBlur (khung, (7, 7), 0)
# Chuyển đổi từ định dạng màu BGR sang HSV
hsv = cv2.cvtColor (dim_frame, cv2. COLOR_BGR2HSV)
# Xác định dải màu hsv dưới và trên để phát hiện. Màu xanh ở đây
Lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, Lower_blue, upper_blue)
# Tạo nhân hình elip
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Mở đầu hình thái (xói mòn theo sau là giãn nở)
mask = cv2.morphologyEx (mask, cv2. MORPH_OPEN, kernel)
# Tìm tất cả các đường viền
contours, hierarchy = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [- 2:]
nếu len (contours)> 0:
# Tìm đường viền lớn nhất most_contour = max (contours, key = cv2.contourArea)
# Tìm tâm của đường viền và vẽ vòng tròn đầy
khoảnh khắc = cv2.moments (lớn nhất_contour) centre_of_contour = (int (khoảnh khắc ['m10'] / khoảnh khắc ['m00']), int (khoảnh khắc ['m01'] / khoảnh khắc ['m00'])) cv2.circle (khung, centre_of_contour, 5, (0, 0, 255), -1)
# Ràng buộc đường viền bằng hình tròn
ellipse = cv2.fitEllipse (big_contour) cv2.ellipse (frame, ellipse, (0, 255, 255), 2)
# Lưu tâm của đường bao để chúng tôi vẽ đường theo dõi nó
center_points.appendleft (centre_of_contour)
# Vẽ đường từ các điểm trung tâm của đường viền
đối với tôi trong phạm vi (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (frame, center_points [i - 1], center_points , (b, g, r), 4)
cv2.imshow ('original', frame)
cv2.imshow ('mặt nạ', mặt nạ)
k = cv2.waitKey (5) & 0xFF
nếu k == 27: break
cv2.destroyAllWindows ()
cap.release ()
Đề xuất:
Người theo dõi đối tượng Pixy2Bot (Mã Servo): 4 bước
Pixy2Bot Object Follower (Servo Code): Xây dựng một đối tượng đơn giản theo sau robot (không có cơ chế xoay / nghiêng) với Arduino Uno + Motor Shield, hai Servo liên tục rẻ tiền và Pixy2. Video: https://youtu.be/lxBLt5DJ5BM
Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)
Theo dõi & theo dõi cho các cửa hàng nhỏ: Đây là một hệ thống dành cho các cửa hàng nhỏ được cho là gắn vào xe đạp điện hoặc xe tay ga điện tử để giao hàng trong phạm vi ngắn, ví dụ như một tiệm bánh muốn giao bánh ngọt. Theo dõi và theo dõi nghĩa là gì? Theo dõi và theo dõi là một hệ thống được sử dụng bởi ca
Bộ dụng cụ theo dõi xe ô tô tự làm bằng rô bốt thông minh Theo dõi ô tô cảm quang: 7 bước
Tự làm bộ dụng cụ theo dõi rô bốt thông minh theo dõi ô tô Theo dõi ô tô cảm quang: Thiết kế bởi SINONING ROBOT Bạn có thể mua từ rô bốt theo dõi ô tô ChipLM393 so sánh hai điện trở quang, khi có một đèn LED cảm quang một bên TRẮNG thì bên của động cơ sẽ dừng ngay lập tức, bên kia của động cơ quay lên, để
Raspberry Pi - Mars Rover tự trị với tính năng theo dõi đối tượng OpenCV: 7 bước (có hình ảnh)
Raspberry Pi - Mars Rover tự trị với tính năng theo dõi đối tượng OpenCV: Được hỗ trợ bởi Raspberry Pi 3, nhận dạng đối tượng Open CV, cảm biến siêu âm và động cơ DC có hộp số. Rover này có thể theo dõi bất kỳ đối tượng nào mà nó được huấn luyện và di chuyển trên mọi địa hình
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi