2011-11-08 39 views
5

Tôi chỉ mới bắt đầu học lập trình OpenCV. Tôi có thể hỏi về cách tôi có thể xác định các đường và đường cong trong OpenCV không? Vấn đề của tôi là tôi phải xác định xem hình ảnh có chứa một đường cong lõm hoặc lõm (đường cong ngang hoặc dọc), một đường thẳng đứng, đường chéo hoặc đường ngang hay không.Xác định đường và đường cong của OpenCV

Trong mã của mình, tôi đã sử dụng CvSetImageROI để chụp một phần cụ thể của hình ảnh và sau đó tôi đang cố gắng xác định từng phần theo các đường/đường cong đã nói.

Có các chức năng trong OpenCV có sẵn không? Cảm ơn bạn rất nhiều vì sự giúp đỡ. Nhân tiện, tôi đang sử dụng Linux và C++.

+0

Bạn có thể tìm thấy bất kỳ phương pháp nào để xác định đường cong trong hình ảnh. –

Trả lời

5

Biến đổi bột http://en.wikipedia.org/wiki/Hough_transform, http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm là cách tiêu chuẩn để thực hiện. Trong hình thức đơn giản của nó (như được thực hiện trong OpenCV) nó có thể phát hiện các dòng của vị trí và góc phân đoạn và vị trí của trọng tài.

Nhìn vào đây để một ví dụ http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=hough#houghlinesp

Đối với các đường cong, quá trình phát hiện là phức tạp hơn một chút, và bạn cần Hough chung transform Người ta chưa có sẵn trong OCV, nhưng bạn có thể viết nó như một bài tập hoặc tìm kiếm một triển khai tốt. http://en.wikipedia.org/wiki/Generalised_Hough_transform mô tả nó (trong ngắn hạn)

+3

Bạn cũng có thể xem xét Canny() và FindContours() – Adrian

+0

Làm cách nào để kiểm tra các góc? Tôi có thể lấy nó từ các tham số không? Cảm ơn nhiều! – cmsl

+0

Biến đổi hough trả về các góc và chặn (nếu bạn sử dụng kiểu cổ điển) và các điểm cuối phân khúc (đối với điểm xác suất). Bạn có thể trích xuất các góc với các phép tính hình học đơn giản từ các điểm cuối hoặc sử dụng phép biến đổi cổ điển. Kiểm tra tài liệu OpenCV và ví dụ trong liên kết ở trên – Sam

Các vấn đề liên quan