Mar 7, 2012

Hướng dẫn cài đặt OpenCV cho Visual Studio 2010, 2012 và 2013 bản x64.

Mình đã vật lộn mất gần một buổi để cài nó. Hi vọng có bạn nào dùng cái này sẽ đỡ phải nhọc. Không chỉ cài đặt được trên phiên bản 2.3.1, hướng dẫn dưới đây còn áp dụng được cả cho các phiên bản 2.0 về trước và các bản mới nhất. Đồng thời chạy tốt trên các bản Visual Studio 2008, 2010, 2012.
I. Cài đặt.
Download OpenCV 2.3.1 Here.
1. Download về và mở setup (thực tế là nó extract). Giả sử giải nén ở thư mục: C:\OpenCV231
2. Download và setup cmake. Link here.
3. Chạy cmake-gui. Trong mục "Where is the source code" Chọn thư mục giải nén (C:\OpenCV231). Trong mục "Where to build the binaries" chọn C:\OpenCV231\smvc (tự tạo thư mục này). Click Configure.
clip_image002
Chọn Visual Studio 10 (đối với x86) và Visual Studio 10 x64 với bản x64. Chọn "Use default native compiler". Click Finish.
clip_image004
5. Bản danh sách tùy chọn hiện ra. Click vào tùy chọn "install_c_examples". Sau đó click "Generate".
6. Mở OpenCV.sln lên. Chọn "Debug" trong Solution configuration. Nhấn F7 để build. (có 3 projects bị skippped, đừng lo :D ). Sau đó chọn "Release" và F7 tiếp.
7. Copy thư mục "lib" vaf "bin" từ C:\OpenCV231\msvc sang C:\OpenCV231. Tương tự, copy thư mục "include" từ C:\OpenCV231\build sang C:\OpenCV231\Include. Nếu không được thì thử copy include vào C:\OpenCV231.
8. Thêm 2 thư mục sau vào environment variables:
C:\OpenCV231\bin\Release
C:\OpenCV231\bin\Debug
Control Panel -> System -> Advanced System Settings -> Environment variables và thêm 2 thực mục đó vào biến "path".
II. Thiết lập:
1. Tạo một dự án "Win 32 console application".
2. Trong Solution Explorer, click chuột phải vào project và chọn Properties. Chọn VC++ Directories. Trong mục Include Directories, thêm 2 thư mục:
C:\OpenCV231\include
C:\OpenCV231\include\opencv
3. Ở thiết lập "Debug", trong Library Directories, thêm thư mục sau:
C:\OpenCV231\lib\Debug
Đối với thiết lập "Release" là:
C:\OpenCV231\lib\Release.
4. Chọn Linker -> Input. Trong "Additional Dependencies" chép danh sách sau (đối với thiết lập Debug):
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_haartraining_engined.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib
Đối với thiết lập Release:
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_haartraining_engine.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib
III. Cấu hình x64:
1. Project > Properties chọn Configuration Properties.
2. Mục Active Solution Platform chọn new
3. clip_image006
4. Trong hộp thoại New Solution Platform ,Mục Type or select the new platform, chọn x64. Mục Copy settings from chọn Win32. Stick vào Create new project platform. Nhấn OK.
Lưu ý: Các phiên bản trước sử dụng #include <cv.h> sẽ được thay bằng #include <opencv2/opencv.hpp>
Log:
  • Phiên bản OpenCV 2.3.1 và Visual Studio 2012 Express không tương thích và xảy ra lỗi, chủ yếu là các lỗi liên quan đến "std::tuple" - Các khắc phục: Cập nhật bản OpenCV mới, hoặc sử dụng các bản Visual Studio cũ.
  • Phiên bản OpenCV 2.4.6 và VS 2012 bị lỗi API "imread" trong chế độ Debug. Giải pháp: Dùng Release hoặc sử dụng API của C sau đó convert IplImage sang cv::Mat.  Lỗi khi sử dụng CMake. Trong trường hợp quá trình config bị lỗi thì ta xóa sạch những file đã được CMake generate trước đó và config lại từ đầu.
Giải pháp cho việc tạo nhiều Project: Khi phải thường xuyên tạo các project, việc chỉnh lại các config là vô cùng bất tiện. Dưới đây là 1 số tips giúp giảm thời gian config:
  1. Chép thư mục C:\OpenCV231/include vào thư mục C:\Program Files (x86)\Microsoft Visual Studio [Số phiên bản]\VC\include .
  2. Chép thư mục C:\OpenCV231/lib/[Release/Debug] vào thư mục C:\Program Files (x86)\Microsoft Visual Studio [Số phiên bản]\VC\lib\  đối với bản x32, đối với bản x64 thì chép vào C:\Program Files (x86)\Microsoft Visual Studio [số phiên bản]\VC\lib\amd64.
  3. Sau khi làm 2 cách trên, ta không cần config các path đến file header và lib nữa. Chuyện còn lại duy nhất cần làm khi config là thêm các file linker và trong Input -> Linker (mục 4 phía trên).Lưu ý đối với các bản chạy x64 cần phải chuyển platform sang amd64 mới chạy được.
Lưu ý nho nhỏ: Đối với phiên bản Visual Studio 2013, thì tốt nhất là các bạn nên cài bản OpenCV 2.4.8 trở đi. Mình cài thử bản 2.4.7 và dính vài lỗi.