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.

16 comments:

  1. Em làm ko được, anh có thể dùng teamview giúp em ko? YH của em là codonminhai_qt.
    Mong anh giúp đỡ

    ReplyDelete
  2. Anonymous28/4/12 23:25

    Khả năng dịch English cũng khá tốt nhưng vẫn còn thiếu và sai một số lỗi:
    Tương tự, copy thư mục "include" từ C:\OpenCV231\build sang C:\OpenCV231\include nhé chứ ko phải C:\OpenCV231 và khi dịch ko nên bỏ qua chi tiết dù nhỏ,:D

    ReplyDelete
  3. Cảm ơn nhận xét của bạn, mình xin tiếp thu :)

    ReplyDelete
  4. Anonymous23/9/12 16:58

    Minh dung vs2010 32bit thi co can Cấu hình x64 khong ban(III. Cấu hình x64: )

    ReplyDelete
  5. bạn ơi cho mình hỏi tạo 1 project ví dụ như hello world thế nào vậy, mình tạo mãi mà không được, bạn làm ví dụ được k

    ReplyDelete
    Replies
    1. Nếu bạn làm đúng theo hướng dẫn thì chắc chắn sẽ được. Chúc bạn thành công

      Delete
  6. Chào bạn Đăng Khoa, mình muốn làm một project vừa sdung opengl vừa sdung opencv. Bạn có thể chỉ giúp mình cái configure cả 2 cái opencv và opengl vào cùng 1 project không? Mình cảm ơn bạn và rất cần sự giúp đỡ của ban. Cảm ơn bạn.

    ReplyDelete
    Replies
    1. Bạn cứ config giống như 2 project độc lập, không sao cả. :)

      Delete
  7. minh bien dich thi bi loi:
    The system cannot find the file specified
    mong ban huong dan cach khac phuc giup !

    ReplyDelete
    Replies
    1. mình chưa gặp lỗi này bao giờ :(

      Delete
  8. bạn Dang Khoa ơi cho minh hỏi tí nhé,mình chạy Cmake gui mà khi an vào configure
    thì nó báo lối " eror in configuration process, project file may be invailid", mac dù đã tạo sẵn project và buil nó dc rồi.Mong được giúp đỡ cách xử lí,cám ơn bạn nhiều!

    ReplyDelete
    Replies
    1. Mình nhớ thường trong cMake nó không báo lỗi vậy. Bạn có thể copy toàn bộ output củ cmake không? Có thể mình nhận ra đc 1 số lỗi.

      Delete
  9. data visualization tool
    SQIAR (http://www.sqiar.com/solutions/technology/tableau) is a leading Business intelligence Company.Using Tableau,SQIAR rapidly transform your sea of uncorrelated data into meaningful interactive and actionable visual insights.SQIAR Provide Services in United kingdom and USA.

    ReplyDelete
  10. trên bản vs2013 x64 thì làm sao bạn

    ReplyDelete
  11. Mình tải Cmake về nhưng ko có phần setup. Bạn có thể giúp mình qua teamview dc k? Mail mình là viettrung92@gmail.com

    ReplyDelete