2012-07-05 47 views
10

Các hàm HoughLines hoặc HoughLinesP trong OpenCV có trả về danh sách các dòng theo thứ tự tích lũy như hàm HoughCircles không? Tôi muốn biết thứ tự của các dòng. Nó cũng sẽ rất tiện dụng để có được một giá trị tích lũy cho các dòng để một ngưỡng thông minh và thích ứng có thể được sử dụng thay vì một ngưỡng cố định. Là giá trị đặt hàng hoặc giá trị tích lũy có sẵn không có rewriting OpenCV myself?OpenCV Hough dòng mạnh nhất

+1

Tốt một. Tôi luôn luôn giả định các dòng được đưa ra theo thứ tự. Và giả định này cho đến nay đã phù hợp với kết quả của tôi ... Tuy nhiên, nó sẽ là tốt đẹp để chắc chắn. –

Trả lời

11

HoughTransform lines orders giảm dần theo số phiếu bầu. Bạn có thể thấy mã here

Tuy nhiên, số phiếu bầu bị mất khi hàm trả về - cách duy nhất để có nó là sửa đổi OpenCV.

Tin vui là không quá phức tạp - tôi đã tự làm một lần. Đó là một metter phút để thay đổi đầu ra từ vector<Vec2f> thành vector<Vec3f> và điền thông số cuối cùng với số phiếu bầu.

Ngoài ra, bạn phải sửa đổi CvLinePolar để thêm thông số thứ ba - hough được thực hiện trong C và có một trình bao bọc trong số C++, vì vậy bạn phải sửa đổi cả triển khai và trình bao bọc.

Mã chính để sửa đổi là ở đây

for(i = 0; i < linesMax; i++) 
{ 
     CvLinePolar line; 
     int idx = sort_buf[i]; 
     int n = cvFloor(idx*scale) - 1; 
     int r = idx - (n+1)*(numrho+2) - 1; 
     line.rho = (r - (numrho - 1)*0.5f) * rho; 
     line.angle = n * theta; 

     // add this line, and a field voteCount to CvLinePolar 
     // DO NOT FORGET TO MODIFY THE C++ WRAPPER 
     line.voteCount = accum[idx];   

     cvSeqPush(lines, &line); 
} 
+0

Cảm ơn bạn đã thực hiện điều đó rõ ràng và chỉ cho tôi mã. Tôi đang sử dụng phiên bản xác suất và đi qua mã, nó sẽ là tốt đẹp để mang lại linesMax ra quá để tăng tốc độ những thứ lên. – zzzz

+1

Xác suất nằm trong cùng một tệp, tôi nghĩ bạn đã tìm thấy nó. Cách tiếp cận khác nhau trong tìm kiếm dòng có nghĩa là số phiếu bầu không có liên quan như trong cổ điển H. Miễn là một dòng có số phiếu yêu cầu tối thiểu, nó được đẩy trong hàng đợi kết quả. Không phân loại nào được thực hiện. – Sam

+0

Xin chào, Xin lỗi vì đã sửa lại chủ đề này, nhưng bạn có ý tưởng hwo để có được giá trị tích lũy trong biến đổi hóc môn không? Tôi không hoàn toàn chắc chắn nơi trong các ma trận tích lũy các phiếu của dòng là. – Aeefire

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