Tôi đang viết ứng dụng nhỏ để phát hiện hình dạng. Điều tôi cần làm ngay từ đầu là tìm hình dạng quan trọng nhất trên hình ảnh. Tôi bắt đầu từ một số tiền xử lý bao gồm chuyển đổi hình ảnh sang màu xám, đập và phát hiện cạnh. Hình ảnh trước và sau khi các hoạt động này được trình bày dưới đâyphát hiện hình dạng - xấp xỉ đường viền với OpenCV
Trước
Sau
Vì vậy, Bạn có thể thấy hình dạng chính là nhìn thấy được (tuy nhiên nó là một chút rải rác) và cũng có một số tiếng ồn (cây nhỏ vv). Những gì tôi cần làm là để trích xuất bằng cách nào đó chỉ là hình dạng quan trọng nhất (một trong những lớn nhất) - trong trường hợp này nó là một tháp. Những gì tôi muốn làm là sử dụng chức năng tìm đường viền trong opencv và sau đó bằng cách nào đó được tìm thấy một cách tương đối có liên quan với đa giác. Sau đó, tôi sẽ (bằng cách nào đó) tính toán diện tích countours và chọn chỉ số lớn nhất. Cho đến nay tôi manged (chỉ) để tìm đường nét sử dụng
cvFindContours(crated,g_storage,&contours);
Tôi biết rằng có một chức năng
cvApproxPoly
, tuy nhiên tôi không thể nhận được bất kỳ thông tin hữu ích cho các kết quả của chức năng này . Ai đó có thể cho tôi biết nếu có thể tính diện tích đường bao hoặc để ước tính mức độ cạnh tranh với đa giác. Có lẽ bạn có một ý tưởng tốt hơn làm thế nào để trích xuất chỉ có hình dạng quan trọng nhất?
Là một yêu cầu đối với quy trình Binarization. Nó luôn luôn khó để tìm thấy một giá trị ngưỡng tốt. Tôi luôn tính toán Hisogram và tìm kiếm một "Low Point". Ở đó bạn thường có giá trị Ngưỡng nive. Nếu bạn đang sử dụng JPEG, phương pháp này có thể không hoạt động tốt. –