Phát hiện quả bóng OpenCV – màu dựa

Đây là đóng góp đầu tiên của tôi về máy tính và hình ảnh xử lý tên miền, vì vậy hãy để tôi bắt đầu với một ví dụ đơn giản. Trong mẫu này, tôi sẽ nói về bóng phát hiện và theo dõi bằng cách sử dụng màu đơn giản dựa trên. Đặc biệt, màu đỏ sẽ phát hiện. Trước hết, tôi sẽ chỉ cho bạn một bản demo thú vị. Sau đó tôi sẽ giải thích làm thế nào chúng tôi làm điều đó có chuẩn bị phần cứng phần mềm, thực hiện và giải thích,

Giới thiệu


Hoặc
http://www.Dailymotion.com/video/x4t13gu

Chuẩn bị phần cứng và phần mềm
Thực hiện và giải thích

Quay video từ webcam:

    VideoCapture cap(0);

Chụp ảnh tạm thời từ các máy ảnh:

    Mat imgTmp;
    Cap.read(imgOriginal);

Chuyển đổi khung hình được chụp từ BGR HSV:

	cvtColor (imgOriginal, imgHSV, COLOR_BGR2HSV);

Ngưỡng hình ảnh:

Mat imgThresholded;
inRange (imgHSV, vô hướng (iLowH, iLowS, iLowV), vô (iHighH, iHighS, iHighV), imgThresholded);

Hình thái học mở (loại bỏ các đối tượng nhỏ từ phía sau):

	xói mòn (imgThresholded, imgThresholded, getStructuringElement (CV_SHAPE_ELLIPSE, kích thước (3, 3)));
	giãn (imgThresholded, imgThresholded, getStructuringElement (CV_SHAPE_ELLIPSE, kích thước (3, 3)));

Hình thái học đóng cửa (loại bỏ các lỗ nhỏ từ phía sau)

	giãn (imgThresholded, imgThresholded, getStructuringElement (CV_SHAPE_ELLIPSE, kích thước (3, 3)));
	xói mòn (imgThresholded, imgThresholded, getStructuringElement (CV_SHAPE_ELLIPSE, kích thước (3, 3)));

Tính toán những khoảnh khắc của hình ảnh thresholded

	Những khoảnh khắc oMoments = moments(imgThresholded);

	đôi dM01 = oMoments.m01;
	đôi dM10 = oMoments.m10;
	đôi dArea = oMoments.m00;

Nếu khu vực > = 5000, tôi xem xét các có là không có đối tượng trong hình ảnh và nó là vì tiếng ồn, khu vực không phải là số không:

	Nếu (dArea > 5000)
	{
	    Tính toán vị trí của quả bóng
	    int posX = dM10 / dArea;
	    bó hoa int = dM01 / dArea;

	    Nếu (iLastX > = 0 && iLastY > = 0 && posX > = 0 && bó hoa > 0)
	    {
		Vẽ một đường màu đỏ từ trước thời điểm đến thời điểm hiện tại
		dòng (imgLines, Point (posX, bó hoa), điểm (iLastX, iLastY), Scalar(0,0,255), 2);
	    }

	    iLastX = posX;
	    iLastY = bó hoa;
	}

Biên dịch và chạy

     g ++ -o ball_detection ball_detection.cpp-L/home/user_name/opencv-2.4.11/build/install/lib-lopencv_core-lopencv_imgproc-lopencv_highgui
     . / ball_detection

Bạn cũng có thể có một cái nhìn trên Github của chúng tôi
git clone https://github.com/Booppey/ball_detection.git

Video ứng dụng mô-đun này cho con vẹt nhảy Sumo bóng đỏ theo dõi

Kênh Youtube của chúng tôi

Ứng dụng này, chúng tôi sử dụng các thuật toán, nhưng thay đổi kiến trúc. Và chúng tôi sử dụng client-server kiến trúc. Đặc biệt, xử lý một phần hình ảnh chạy về phía máy chủ và điện thoại android + robot cung cấp cho phía khách hàng.

Kết luận

OpenCV bóng phát hiện hoặc OpenCV bóng theo dõi là một chủ đề đơn giản trong hình ảnh chế biến và máy tính tầm nhìn tên miền. Nhưng tôi nghĩ rằng với ví dụ này, bạn có thể dễ dàng hiểu làm thế nào chúng tôi sẽ làm một dự án cho đối tượng phát hiện và/hoặc đối tượng theo dõi.
Nếu bạn có bất kỳ bình luận, câu hỏi, đề nghị, xin vui lòng để lại ở đây một bình luận. Tôi sẽ trả lời bạn càng sớm càng tốt.

Share This:

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *