Build lib OpenCV 3.x.x cho windows

Apps-Cmake-icon

OpenCV 3.x.x có đặc điểm khác với các phiên bản trước đó là họ build toàn bộ source thành file opencv_world3xx.lib và opencv_world3xx.dll. Ưu điểm là chỉ cần include 1 file *.lib là được, còn nhược điểm là include cả những project không sử dụng. Dẫn đến project nặng không cần thiết.

Nếu người dùng chỉ muốn include những files *.lib cần thiết phải thì tự build để sử dụng. Các bước thực hiện cũng khá đơn giản: dùng cmake để build ra solution c++ (solution này chứa tất cả project nhỏ của opencv). Sau đó mở solution này rồi build là ra những lib cần thiết.

Opencv có các phiên bản cho các OS khác nhau, bài này chỉ tập trung nói về Windows.

Các file lib thường dùng nhất là:

opencv_corexxx.lib
opencv_highguixxx.lib
opencv_imgcodecsxxx.lib
opencv_imgprocxxx.lib

1. Chuẩn bị những thứ cần thiết

OpenCV 3.x.x
CMake 3.4.1: tool này dùng để build ra các project của nhiều ngôn ngữ khác nhau, bài này chỉ hướng dẫn cách build solution cho c++, phiên bản đang sử dụng là 3.4.1
Visual Studio: khuyến khích sử dụng phiên bản Visual Studio 2015 Community để hỗ trợ C++ 11. Link Google Drive dự phòng

Cấu trúc của source OpenCV

Sau khi download file exe của Opencv về, nhấp đúp vào để file exe tự giải nén. Giải nén xong được 2 thư mục là build source

build: là thư mục chứa các file binary build sẵn như opencv_worldxxx.dll, hay là cv2.pyd dành cho python
source: là thư mục chứa source code và các file example của nhiều platform khác nhau. Tiện dụng nhất là các file python giúp bạn chạy trực tiếp mà không cần compile sẵn như c++


2. Dùng cmake để tạo solution c++

CMake có nhiều option để cho các bạn có thể build ra nhiều platform khác nhau, nhiều compiler khác nhau. Trong bài này chỉ hướng dẫn tạo solution cho Visual Studio chạy trên Windows mà thôi.

Sau khi cài đặt CMake xong, chạy chương trình và chọn đường dẫn đến thư mục source và thư mục build của OpenCV 3.0, nó sẽ đỏ như thế này.

Các bạn check vào “Grouped” để gom nhóm cho gọn, các giá trị cứ để default là được, cột value đánh dấu những lib nào sẽ được build, default là build hết.

Ấn nút configure để chương trình tạo ra file config, có 1 popup hiện ra hỏi bạn muốn chọn Visual studio phiên bản nào thì chọn bản bạn đang sử dụng. Nếu config thành công thì CMake sẽ báo “Configuring done”. Tiếp theo là ấn nút “Generate” để tạo solution C++. Với máy CPU core i5 2500 thì build chưa tới 5 phút, generate thành công thì sẽ báo “Generating done”.

Lưu ý:
– Từ phiên bản 3.x.x trở đi, IPP (Intel®Integrated Performance Primitives) được nhúng sẵn vào code, điều đó giúp cho code được tối ưu hoá tốc độ xử lý bằng cách chạy đa luồng và khai thác tối đa tốc độ CPU. Tuy nhiên IPP khá phức tạp và cũng chưa cần thiết lắm với các ứng dụng nhỏ.


3. Build solution để tạo ra lib

Vào thư mục build của OpenCV sẽ thấy nhiều files vcxproj được tạo ra. Chạy file OpenCV.sln để build các libs cần thiết. Bạn nên build cả 2 mode Debug Release cho tiện dụng sau này.

Screenshot 2018-01-11 15.09.36

Sau khi build thành công thì trong thư mục build\lib\$(config)\ sẽ có các file *.lib, còn thư mục build\bin\$(config)\ sẽ có các file *.dll

Nếu có trục trặc gì khi build, vui lòng comment bên dưới để chia sẻ những kinh nghiệm với mọi người 😀 Ai build không thành công thì có thể download các file build sẵn cuối bài

Do các đường dẫn khi build bằng Cmake là đường dẫn tuyệt đối, đem qua máy khác sẽ không chạy nên các bạn cần replace các đường dẫn đó bằng macro như $(SolutionDir) hoặc $(ProjectDir) chẳng hạn. Khi đem qua máy khác máy tính sẽ thay các macro đó bằng đường dẫn phù hợp.

Download

Mình đã tạo solution cho OpenCV 3.2.0 sử dụng Visual Studio 2015 sẵn cho các bạn. Pull code về rồi mở solution (OpenCV.sln) để build ra các lib cần thiết.

Visual Studio 2015 Community (Google Drive)

Opencv 3.2.0 maked with VS2015 (Git Hub)

9 Responses to Build lib OpenCV 3.x.x cho windows

  1. Nguyen KHai says:

    Khong bam like dc admin oi, bam vao ko hien link

    • vohungvi says:

      Vẫn vào xem được bình thường mà, bạn có đăng nhập Facebook trên máy tính ko?

  2. NgocOggy says:

    Anh ơi. Em Build hết mục Modules đc không anh. Hay chỉ build những lib đầu bài thôi ạ.

    • vohungvi says:

      bạn build những lib cần thiết thôi cũng được, nhưng để tiết kiệm thời gian thì build sẵn hết, khi cần là có để sử dụng

    • Hào Nguyễn says:

      build solution là build hết còn chọn từng mục là buil nhưng cái cần thiết hả a

    • vohungvi says:

      đúng rồi, nhưng cần phải build hết

  3. Anh ơi. Làm sao để build được opencv có Intel TBB để chạy đa luồn?

    • vohungvi says:

      Mình có thử chọn option TBB nhưng máy mình không phù hợp nên mình không nắm được phần này

  4. Dương Nổ says:

    Ad ơi cho mình hỏi với mình cần đóng gói project thành file .exe để mang sang máy khác chạy. nhưng sau khi mình đóng gói xong mang sang máy khác ko chạy được vì nó yêu cầu máy đó cũng cần được cài opencv. vậy có cách nào để đóng gói project thành file cài mà mang sang máy khác chưa cài opencv có thể chạy được không AD. thank bạn

Leave a Reply