Cv2.drawcontours trăn
Bài viết ứng dụng OpenCV để nhận định dạng và đếm số lượng vật chất có thể giúp giảm bớt thời gian làm việc thủ công cho con người. You may be apply outside Đậu đếm để đếm nhiều loại vật thể khác nhau với số lượng lớn Show Giới thiệuHiện nay máy móc giúp đỡ con người trong rất nhiều công việc như cơ khí, vũ trang, nhưng hầu hết các công việc đó máy móc giúp đỡ về phần sức khỏe, về thể chất của con người. Con người suy nghĩ và đưa ra quyết định cho máy móc làm việc, vì vậy phần cốt lõi nếu muốn máy móc làm việc hết công việc đó là máy móc phải nhận dạng xung quanh thế giới Bài viết này ứng dụng OpenCV vào việc đếm số lượng các vật thể, tôi dùng Python để tiện cho việc viết demo, bạn có thể dùng OpenCV C++ hoặc C# với EmguCV cũng cho kết quả tương tự Môi trường thử nghiệm
Sử dụng OpenCV trong bài toán đếm đậuI parti out to twosteps main that is. Nhận định dạng và đếm Cài đặt thư viện OpenCV và Numpy qua dòng lệnh pip install opencv-python pip install numpy Tôi phải tuyên bố trong kịch bản đoạn để biết những thư viện mà tôi sắp sử dụng from cv2 import cv2 import numpy as np from skimage.morphology import opening Nhận định dạngĐầu tiên tôi đọc ảnh lên và đặt tên là ảnh image = cv2.imread("images/dem-dau-voi-opencv.jpg") Tạo một bức ảnh màu xám từ ảnh gốc và đặt tên là GrayImage grayImage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) Tôi sử dụng thuật toán Gaussian để làm mờ các bức ảnh từ bức ảnh xám blur = cv2.GaussianBlur(grayImage, (9,9), 1) Tiếp theo tôi sử dụng ngưỡng phương thức thích ứng nhưng tôi nhận thấy rằng bức ảnh của tôi có độ sáng phân bổ không đều nên thay vào đó tôi sử dụng ngưỡng phương thức thích ứng Chào tuần mới anh Mì AI, hôm nay chúng ta sẽ sử dụng OpenCV thuần với Python để thử đo kích thước các vật thể trong ảnh nhé Việc làm đo kích thước này mình cũng nói trước mấy luôn điểm
Tuy nhiên, với mục đích học tập thì hoàn toàn có thể nhận được. Ngoài ra mình cũng đã có 1 bài đo khoảng cách tương tự các bạn cũng có thể đọc để tham khảo nhé. tại đây Okie con yêu. Bắt đầu tìm hiểu nào Phần 1 – Làm sao để đo kích thước vật thể trong ảnh?Rõ ràng với logic thông thường thì muốn đo kích thước vật thể trong ảnh ta phải biết được các yếu tố như. Khoảng cách từ máy ảnh đến vật khi chụp, Tiêu cự của máy ảnh, góc chụp…. rất phức tạp như hình bên dưới Tuy nhiên với anh em Mì sợ học toán thì mình sẽ có một cách đơn giản hơn như sau. (bạn nào thích làm phức hợp có thể nghiên cứu cách căn chỉnh camera tại đây)
Các bạn đã ôm được tinh thần rồi chứ? . https. //Facebook. com/groups/miaigroup để thảo luận nhé Phần 2 – Triển khai bài toánViệc đầu tiên là ta phải tìm cách đo được kích thước bằng pixel của các vật thể trong ảnh, đó là yếu tố quyết định đầu tiên cho bài toán này Giả sử ta có một tấm ảnh như sau và ở đây Vật tham chiếu là đồng xu 1 Rufiuaa của Maldives (kỷ niệm chuyến đi năm tháng của mình kaka) và Vật cần đo là chiếc USB bên cạnh Ta đã biết đồng xu này có kích thước thật là 2cm = 20mm. Bây giờ chúng ta sẽ cùng nhau thực hiện các bước nhé Xử lý tiền và truy tìmViệc đầu tiên là phải thực hiện chuyển đổi về ảnh xám và tìm kiếm cận cảnh để bước sau khi tìm kiếm đường viền
Sau bước này ta sẽ có bức ảnh như sau Nhìn qua ta đã thấy có thể tìm được các đường viền của đồng xu và cái USB rồi. Chú ý ở đây làm nền của mình khá phức tạp nên việc tìm đường viền khá khó,các bạn có thể thử với nền đơn giản hơn (đơn sắc, phẳng…. ) cho dễ nhé Tìm đường viền và xác định kích thước bằng pixelRồi, bay giờ ta sẽ tìm các đường viền trong hình, và loại bỏ các đường viền nhỏ để giữ lại 2 đường viền chính là đồng xu và USB
Với các đường viền được tìm thấy, chúng tôi sẽ thực hiện tính toán kích thước của nó bằng, tính bằng Pixel. Ở đây chúng ta sử dụng khái niệm MinAreaRect chứ không phải Bounding Box nhé Các bạn có thể phân biệt theo hình sau (đỏ là MinAreaRect và xanh là giới hạn hộp)
Sau bước này, ta đã có kích thước Vật tham chiếu (đồng xu) bằng Pixel, ta sẽ tính toán số $P$ (xem lại phần 1 nếu không nhớ $P$là gì) $$P = Kích thước thực / Kích thước tính bằng pixel$$ Go to any feature Và kích thước thật của các Vật cần đo (USB) là
Sau khi đã tính toán xong thì ta chỉ cần vẽ lên ảnh cho đẹp, kẻ các đường viền khung là okie Full code of this function is
Và bước cuối cùng là hiển thị ảnh đã vẽ với các kiểu lên màn hình Mình có chia sẻ github có sẵn code để các bạn tải về chạy thử nhé. tại đây. Chú thích cài đặt thư viện bằng lệnh
Xong rồi,. Đó là bản dã hướng dẫn các bạn sử dụng OpenCV để đo kích thước các vật thể trong máy ảnh được rồi. Các bạn có thể phát triển, ứng dụng cho các bài toán riêng của các bạn nhé |