Phát hiện tuyến thường dẫn đến việc sử dụng biến đổi Hough, dò tìm bên hông và phát hiện đường viền chỉ hoạt động như bộ xử lý thuận tiện nếu cần.
Nếu bạn có đường thẳng song song, sử dụng
void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0)
cho dòng phát hiện nơi tham số thứ hai sẽ chứa các phát hiện:
dòng - vector đầu ra của dòng. Mỗi dòng được biểu thị bằng một vector hai phần tử (ρ, θ) là . ρ là khoảng cách từ tọa độ nguồn gốc (0, 0) (góc trên cùng bên trái của hình ảnh). θ là góc quay ở radian (0 ∼ đường thẳng đứng, π/2 ∼ đường ngang).
[opencv2refman.pdf]
Điều này có nghĩa, mà khoảng cách giữa hai dòng nên abs(rho1-rho2)
, mà khoảng cách khác biệt tuyệt đối giữa các giá trị điểm ảnh trong cột đầu tiên của lines
. (Lưu ý: Phương pháp nên CV_HOUGH_STANDARD
đây!)
Đối dòng không song song bạn phải xác định những gì bạn nghĩ là một khoảng cách, nhưng sau đó OpenCV vẫn có thể cung cấp cho bạn với các tọa độ của các điểm cuối của mỗi dòng phát hiện.
Bạn chỉ cần sử dụng method = CV_HOUGH_PROBABILISTIC
.
CV_HOUGH_PROBABILISTIC xác suất Biến đổi bột (hiệu quả hơn trong trường hợp nếu hình chứa một vài đoạn thẳng dài). Nó trả về các đoạn thẳng chứ không phải toàn bộ dòng. Mỗi đoạn là được biểu thị bằng điểm bắt đầu và điểm kết thúc và ma trận phải là (số chuỗi được tạo sẽ là) của loại CV_32SC4.
[opencv2refman.pdf]
Bạn cũng có thể tìm thấy một hướng dẫn trong opencv_tutorials.pdf
trong tài liệu hướng dẫn của OpenCV cài đặt của bạn.
Nguồn
2012-11-22 16:43:14
Bạn không cần phải thêm chữ ký vào bài đăng của mình - thẻ người dùng của bạn được thêm tự động. – Artemix