I don’t need sex, because OpenCV and XCode (LLVM) f*ck me whole day.

Một ngày đầy kinh khủng với OpenCV cài trên MAC OSX, đây là mới cài để xài cho Python, Qt và C++, chưa đá động đến CUDA hay OpenNI hay trên iOS nữa, vậy mà nó đã khiến mình tốn nguyên 1 ngày kinh khủng.

Bài này, mình viết dưới dạng tutorial nâng cao. Tức là không còn style step by step nữa, thay vào đó chỉ hướng dẫn sơ lược cũng như các trick cần nhớ để dễ cài hơn. Và lần này là hướng dẫn cài cho cross-platform. Để sure rằng đụng trên OS nào mình sẽ không còn bị ngán. (Yeah!!)

Ghi chú

Một số ghi chú mà mình đã rút được một cách đầy xương máu, đầy kinh dị. Theo mình nhớ, cách đây 4 năm lần đầu cài OpenCV mình cũng đã mất gần 2 ngày, giờ cài trên MAC OSX mất tầm 1 ngày. Hú hồn.

  1. Best pratice: Tập sử dụng CMAKE hoặc Makefile. Cả 2 đều rất được việc khi config lúc build opencv hay lúc chạy chương trình. Dù muốn hay không, thì CMake vẫn là interface trên cả 3 nền tảng. Chính vì điều đó nên phải biết … tập mà xài. Ưu điểm có thể kể đến như sau:

    • Config được cấu hình của OpenCV. Điều này những bản build sẵn không làm được.
    • Cấu hình phù hợp với máy. CMake sẽ tự động tìm các package và cố gắng config khi có thể.
    • Dễ sử dụng, nếu dùng CMake GUI thì rất dễ dùng.
  2. Sau mỗi lẫn thay đổi cấu hình trên CMake thì nhấn Configure lại để CMake cập nhật.

  3. Với bản MAC OSX, nên chọn compiler là Unix Makefile, mọi lựa chọn khác tớ đều không chịu trách nhiệm.

    Chuyện kinh dị đêm khuya, chọn compiler là XCode. Khi build các source khác ( 1 tool rút trích đặc trưng chẳng hạn), thế là nó dính ngay lỗi undefined symbols for architecture x86_64, lỗi này khắc phục bằng cách thêm flags -lstdc++ vô trình biên dịch, nhưng đắng lòng tiếp theo là sau khi compile thì hàng mớ lỗi xảy đến vì sự khác nhau trong hệ thống standard library của XCode và GNU. Lúc đó, chắc chắn chả ai còn hứng thú để mà sửa lỗi tiếp.

  4. Nên có 1 sổ ghi chú, hoặc note ghi lại quá trình cài đặt, không là fail dài dài. Mà thậm chí là cứ làm lặp đi lặp lại mọi thứ.

Cài đặt

Trong phần này gồm các bước cài đặt OpenCV sử dụng CMake. Dùng mà thấy mình cứ như là hacker

  1. Tải source OpenCV về. a. Tải từ website. b. Tải từ github.

  2. Giải nén và tạo thư mục build

    mkdir build
    
  3. Mở CMake, chọn đường dẫn đến.

  4. Nhấn Configure và chọn compiler tương ứng.

    • Bên Linux, theo mình nhớ là GNU.
    • Bên Windows, khuyến khích chọn Visual Studio. Tuy nhiên, số phiên bản của VS khác với số năm của Visual Studio (Tức là Visual Studio 2013 thì không phải có v13).
    • Sau bao đau thương, MAC OS X thì chọn Unix Makefile.
  5. Trong lúc nó run, thì tranh thủ đọc về sự khác nhau của static lib và shared lib

  6. Config các tham số cấu hình, mình thì quan tâm đến vài thứ sau: Qt, Python, Cuda. Vì hôm nữa chắc sẽ có 1 tut khác liên quan đến mấy cái này. Để ý output coi có báo lõi gì không.

  7. Nhấn Configure đến bao giờ trên phần tham số không còn đỏ nữa thì thôi. Lúc đó nhấn build.

  8. Build OpenCV thôi. a. Với các bé họ nhà Unix (Mac OSX, Linux …):

    cd path/to/build/dir
    make -j4 # jk với k là số thread để chạy
    sudo make install
    

    b. Với các bé nhà Windows:

    Chịu khó xem lại bài post cũ của mình, mình sẽ update bản mới trong thời gian đến

UPDATE 1: Vẫn chưa cài được Opencv 3 lên trên python sau bao nhiêu nỗ lực thực hiện với MAC OS X. Mình sẽ cài đặt nó lên trên Linux để test xem sao.

UPDATE 2: Chắc hôm nào sẽ viết tutorial trên cả 3 nền tảng step-by-step.

P/S: Bạn nào muốn share bài của mình thì vô tư, nhưng nhớ ghi rõ nguồn.