2011-12-02 33 views
6

Tôi muốn thực hiện một dự án liên quan đến Computer Vision. Chủ yếu là phát hiện/nhận diện đối tượng. Sau một số nghiên cứu, tôi tiếp tục quay lại OpenCV. Nhưng tất cả các hướng dẫn là từ năm 2008 (tôi đoán nó là lớn cho một chút sau đó). Nó không biên dịch bằng Python trên mac. Tôi đang sử dụng khung công tác C++ ngay từ Xcode, nhưng không có hướng dẫn nào hoạt động vì chúng đã lỗi thời và tài liệu hướng dẫn hút từ những gì tôi có thể phân tích cú pháp.OpenCV và Computer Vision, chúng ta đang đứng ở đâu?

Có giải pháp nào tốt hơn cho những gì tôi đang làm hay không và có ai có bất cứ đề xuất nào về cách học cách sử dụng OpenCV không?

Cảm ơn

+0

Thử sách OpenCV từ O'Reilly? –

+0

Đã phát hành: Tháng 9 ** 2008 ** - xin lỗi, mọi hướng dẫn từ '08 đều không hoạt động. Tôi tin rằng khuôn khổ đã thay đổi rất nhiều kể từ đó. Và từ một bài đánh giá trên trang đó: "Sách đã tốt vào thời điểm đó, nhưng không còn áp dụng khi opencv đã chuyển sang. Họ nên cập nhật sách của họ". – switz

+0

Hãy xem các ví dụ trong mã nguồn OpenCV. – James

Trả lời

6

Tôi đã gặp vấn đề tương tự khi bắt đầu với OpenCV và từ kinh nghiệm của tôi, đây thực sự là rào cản lớn nhất trong việc học nó.Dưới đây là những gì đã hiệu quả đối với tôi:

  1. Cuốn sách này: "OpenCV 2 Cookbook Application Programming Programming Cookbook". Đó là cuốn sách cập nhật nhất và có các ví dụ về cách giải quyết các vấn đề về Thị giác máy tính khác nhau (Bạn có thể xem bảng nội dung trên Amazon bằng "Nhìn vào bên trong!"). Nó thực sự đã giúp tôi dễ dàng tham gia OpenCV và cảm thấy thoải mái với cách thư viện hoạt động.

  2. Giống như những người khác đã nói, các mẫu rất hữu ích. Đối với những thứ mà cuốn sách bỏ qua hoặc chỉ bao gồm một thời gian ngắn, bạn thường có thể tìm thấy các ví dụ chi tiết hơn khi xem qua các mẫu. Bạn cũng có thể tìm các cách khác nhau để giải quyết cùng một vấn đề giữa sách và các mẫu. Ví dụ, cho việc tìm kiếm keypoint/tính năng, cuốn sách cho thấy một ví dụ sử dụng các tính năng FAST:

    vector<KeyPoint> keypoints;
    FastFeatureDetector fast(40);
    fast.detect(image, keypoints);

    Nhưng trong các mẫu bạn sẽ tìm thấy một cách linh hoạt hơn (nếu bạn muốn có tùy chọn lựa chọn mà keypoint thuật toán phát hiện sử dụng):

    vector<KeyPoint> keypoints;
    Ptr<FeatureDetector> featureDetector = FeatureDetector::create("FAST");
    featureDetector->detect(image, keypoints);

Từ kinh nghiệm những thứ của tôi cuối cùng đã bắt đầu bấm và cho các câu hỏi cụ thể hơn bạn bắt đầu tìm kiếm up-to-date thông tin trên các blog hoặc ngay tại đây trên StackOverflow.

0

Câu trả lời đơn giản nhất mà nói đến cái tâm, là để đọc mã ví dụ với một chút hiểu biết, và cố gắng hiểu xem những ý tưởng của bạn làm việc. Các api không thay đổi, và hầu hết các hướng dẫn được viết cho các phiên bản đầu tiên của OpenCV, và có vẻ như không ai làm phiền để viết lại chúng. Tuy nhiên, những ý tưởng cốt lõi đằng sau nó không thay đổi. Vì vậy, nếu bạn tìm thấy một hướng dẫn trả lời câu hỏi của bạn, nhưng viết bằng API cũ chỉ cần nhìn vào tài liệu cho thay thế hiện đại của các chức năng được sử dụng. Nó không dễ dàng và nhanh chóng, nhưng có vẻ như nó hoạt động. Nếu bạn sử dụng phiên bản mới nhất (thực sự là 2.3), tôi khuyên bạn nên sử dụng cả hai 2.1 documntation 2.3 docs + tutorials. Bạn cũng nên xem xét các mẫu, cần được cài đặt cùng với thư viện. Có rất nhiều gợi ý về cách sử dụng một số cấu trúc và thủ thuật không được đề cập trong tài liệu. Cuối cùng, đừng ngại nhìn vào bên trong mã của chính thư viện đó (nếu bạn biên dịch nó trên của chính bạn). Thật không may, đó là nguồn duy nhất tôi biết để kiểm tra ví dụ mã nào tương ứng với loại đối tượng Mat nào.

2

Hãy để tôi thêm một vài thứ. Trước tiên, tôi có thể đảm bảo với bạn rằng các ràng buộc Python để OpenCV hoạt động trên máy Mac. Tôi sử dụng chúng mỗi ngày.

Nhiều người như OpenCV vì nhiều lý do:

  1. Giấy phép là tốt, thân thiện với hội nhập vào sản phẩm thương mại, vv
  2. Nó là khá tốt từ một quan điểm lập trường kỹ thuật. Nó cung cấp cho bạn một tham chiếu thực hiện các thuật toán hiện đại.
  3. Nó có xu hướng khá nhanh so với các lựa chọn thay thế (Matlab tôi đang nhìn bạn).

Giống như tất cả mọi thứ trong cuộc sống, nó không phải là hoàn hảo:

  1. Đó là một ví dụ tốt về một thư viện phần mềm đó là một mục tiêu di động. Tôi có một chương trình python 300 dòng sử dụng OpenCV và sau mỗi tháng tháng khi phiên bản OpenCV mới được phát hành, tôi phải thay đổi nó để thích ứng với các tên/quy ước gọi điện mới, vv Thư viện rất nhiều, tuy nhiên nó là một nỗi đau phải thay đổi cùng một chương trình 3 lần mỗi năm.
  2. Nó có một đường cong học tập, giống như thị giác máy tính, nó là khá kỹ thuật và không dễ học.

Có các lựa chọn thay thế (với ưu điểm và nhược điểm khác) MATLAB với Hộp công cụ xử lý hình ảnh là một ví dụ như vậy.

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